如何在 C++ 中实现模板化方法?
我正在考虑在 JVM 中实现模板,并且已经为模板化类考虑了一个可能的实现,但不确定方法。
例如,如果您这样做了:
class Test
{
public static boolean isIterable<T>(T variable)
{
return T instanceof Iterable;
}
}
System.out.println(Test.isIterable(new int[] { 0 }));
我会创建一个版本的 Test
来回复 int[]
吗? (在我的实现中,该类将这样命名:$g$Test$A_Java_lang_int
)
请忽略泛型的任何问题(例如只需要盒装对象),因为我打算删除它们。
我计划动态创建这些已解析的模板,并跟踪引用的数量,以便在不使用时删除它们。我相信这就是 .Net 管理它的方式,尽管我很乐意在这里犯错!
最佳答案
Would I create a version of Test that replied to
int[]
?
基本上,是的。 C++ 中的模板纯粹是一种编译时机制,它使用(美化的)宏机制为实例化的每种类型生成基于模板的代码。
(由于特化的可能性,C++ 实际上做的更多,但这是它的要点。)
关于java - C++模板化方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6151968/