【发布时间】:2018-03-29 21:12:12
【问题描述】:
我想做某种专业化,像这样:
template <typename Type, int Size>
class Example
{
//some values
public:
double length() const;
}
template <typename Type, int Size>
double Example<double, Size>::length() const {...}
template <typename Type, int Size>
double Example<MyType, Size>::length() const {...}
显然它不起作用。我应该如何实现这个方法?我希望 Type 被显式声明并且 Size 在这里是可变的。
【问题讨论】:
-
这些模板参数在哪里使用?
Size真的需要成为类型的一部分吗? -
你应该只专注于这个类:
template <int Size> class Example<double, Size> { public: double length() const { /* ... */ } }; -
我在 for 循环中使用 Size,它必须是类型的一部分,它在标题中定义。任何定义都不使用类型。
-
或者您也可以使用 CRTP 仅专门化一小部分...
-
好的,那么,你的意思是什么?它仍然是类型的一部分,只有
Type是特化的。