java - C++模板化方法

标签 java templates generics methods

如何在 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/

相关文章:

java - 从泛型类型获取类

java - 无法将项目列表发送到后端以从列表中删除

c++ - 如何协调将 header /源代码与模板分离的 C++ 习惯用法?

c# - 获取对动态对象中方法的泛型调用

c# - 将 List<IInfrastructureEntity> 转换为 List<TEntity>,其中泛型类型 TEntity 必须实现该接口(interface)

c++ - 在 sf::Vector 中重载 operator< 时出错

java - 分析故障转储 (NULL_CLASS_PTR_READ)

JavaFX : fx:id proofing

java - JDK1.6和JDK1.7拖拽区别

c++ - 指针的模板数组类