我有这样的代码:模板名称不带参数
template <typename A>
class templatedclass {
public:
using type = templatedclass;
};
template <typename A>
class sinkstuff {
public:
void print() {
cout << "generic sinkstuff";
}
};
template <typename A>
class sinkstuff <templatedclass<A>> {
public:
void print() {
cout << "partiallyspecialized sinkstuff";
}
};
template <typename NtoA>
struct pass_parameter : sinkstuff<typename templatedclass<NtoA>::type> {};
int main() {
pass_parameter<int> obj;
obj.print();
cout << is_same<templatedclass<int>, typename templatedclass<int>::type>::value; // 1, yes
}
我一直以为“用指令”是对类固醇的类型定义。如何在不指定参数的情况下使用“templatedclass<int>::type
”,即“templatedclass<int>::type<int>
”?
是不是“使用type = templatedclass”只是文本替换?我错过了什么吗?
除了宏,没有什么是“只是文本替换”! – 2014-10-04 17:40:30
相关:http://stackoverflow.com/q/25549652 – dyp 2014-10-04 17:51:39
相关/重复:http://stackoverflow.com/q/8031823 – dyp 2014-10-04 17:52:11