如何在C ++中实现模板化方法?
我正在考虑在JVM中实现模板,并且已经考虑了模板类的可能实现,但我不确定方法。
例如,如果你做了:
class Test
{
public static boolean isIterable<T>(T variable)
{
return T instanceof Iterable;
}
}
System.out.println(Test.isIterable(new int[] { 0 }));
我会创建一个回复Test
的{{1}}版本吗? (在我的实现中,类将被命名为:int[]
)
请忽略泛型的任何问题(例如只需要盒装对象),因为我打算删除它们。
我计划动态创建这些已解析的模板,并跟踪引用的数量,以便在不使用它们时删除它们。我相信这就是.Net管理它的方式,虽然我很高兴在这里出错!
答案 0 :(得分:1)
我建议通过生成类来静态地执行此操作。您可能会发现http://trove.starlight-systems.com/很有趣,因为它具有生成其原始集合的模板方法。例如TintLongHashMap这不依赖于任何语言功能。
我建议你在尝试动态地进行静态处理之前先弄清楚如何做到这一点,这是非常困难的。
答案 1 :(得分:1)
我是否会创建一个回复
int[]
的测试版本?
基本上,是的。 C ++中的模板纯粹是一种编译时机制,它使用(glorified)宏机制为基于模板的代码生成代码,用于实例化它的每种类型。
(由于专业化的可能性,C ++实际上做得更多,但这是它的要点。)