gpt4 book ai didi

c++ - 模板类参数类型的模板类成员特化

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:37:05 24 4
gpt4 key购买 nike

我有一个模板化类 Matrix。我想为复杂类型专门化一个函数,其中 T 可以是任何东西。我试过这个:

  6 template <typename T>
7 class Matrix {
8 public :
9 static void f();
10 };
11 template<typename T> void Matrix<T>::f() { cout << "generic" << endl; }
12 template<> void Matrix<double>::f() { cout << "double" << endl; }
13 template<typename T> void Matrix<std::complex<T> >::f() { cout << "complex" << endl; }

第 13 行无法编译。我该怎么做?

最佳答案

在第 11 行和第 12 行中,您声明了 C++ 标准 14.7/3 允许的类模板成员的显式特化(14.5.2/2 也包含一个很好的示例)。在第 13 行中,您试图部分特化一个类模板,而这种形式不允许这样做(这是部分特化,因为您不知道整个类型 std::complex<T> 因为它仍然依赖于 T )。您应该对整个类(class)进行部分特化。

关于c++ - 模板类参数类型的模板类成员特化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2821859/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com