c++ - 对于模板类 Foo 方法的参数, "Foo&"和 "Foo<T>&"是否相同?

标签 c++ templates

考虑类

template <typename T>
struct Foo {
   Foo(const Foo<T>& other) {}
};

对于构造函数参数类型,是const Foo<T>&const Foo&在这种情况下是否相同?我一直认为不是,认为后者可以称为 Foo<int> f = Foo<float>() ,而前者不能。但现在我不确定是否是这样。

最佳答案

在一个类模板中,类模板参数对每个实例都有一个独特的含义。这意味着 Foo<int>T==int , 因此模板化的 ctor 是 Foo<int>::Foo(const Foo<int>& other) .

虽然额外的模板参数是可能的:

template <typename T>
struct Foo {
   template <typename U>
   Foo(const Foo<U>& other) {}
};

现在T可以不同于 U .

关于c++ - 对于模板类 Foo 方法的参数, "Foo&"和 "Foo<T>&"是否相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38867462/

相关文章:

c++ - 在编译时获取函数名称?

c++ - 模板函数 : How to make a template function with a template class as an argument?

c++ - 将变量作为模板参数传递

c++ - 如何通过 WinAPI 使用不带连字的字体?

c++ - 嵌套类对象的工作?

c++ - 通过重载新运算符检测内存泄漏?

c++ - 在 CUDA 中增加每个线程的工作量的示例

c++ - 具有类类型非类型模板参数的类模板成员的类外定义

python - CSS文件路径问题

c++ - 从类中的 main 调用函数