我有這樣的代碼:模板名稱不帶參數
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