c ++模板化方法

问题描述

| 如何在C ++中实现模板化方法? 我正在考虑在JVM中实现模板,并且已经为模板化类考虑了可能的实现方式,但是不确定方法。 例如,如果您这样做:
class Test
{
    public static boolean isIterable<T>(T variable)
    {
        return T instanceof Iterable;
    }
}

System.out.println(Test.isIterable(new int[] { 0 }));
我会创建
Test
的版本吗? (在我的实现中,该类将这样命名:
$g$Test$A_Java_lang_int
) 请忽略泛型的任何问题(例如仅需要装箱的对象),因为我打算删除它们。 我计划动态创建这些解析的模板,并跟踪引用的数量,以便在不使用它们时将其删除。我相信这是.Net的管理方式,尽管我很高兴在这里犯错!     

解决方法

           我是否将创建一个Test的版本来回复
int[]
? 本质上是。 C ++中的模板纯粹是一种编译时机制,它使用一种(标准化的)宏机制来为模板实例化每种类型的模板生成代码。 (由于专门化的可能性,C ++实际上做了很多事情,但这是要点。)     ,        我建议尝试通过生成类来静态地做到这一点。您可能会发现http://trove.starlight-systems.com/很有趣,因为它具有生成原始集合的模板方法。例如TintLongHashMap这不依赖任何语言功能。 我建议您先尝试静态地进行操作,然后再尝试动态地进行操作,这要困难得多。