我有以下嵌套模板什麼是定義嵌套模板的法律語法?
class A {
template <typename T> class B {
template <typename U> void foo(U arg);
};
};
我試圖定義,像這樣的嵌套模板:
template <typename T, typename U> void
A::B<T>::foo(U arg) {...}
但我得到declaration is incompatible with function template
錯誤。這樣做的法律語法是什麼?
你幾乎還不如干脆把它定義在那裏。它不能在一個單獨的文件中。 – chris 2013-05-09 20:05:36
@chris:只是因爲它不能在一個單獨的翻譯單位並不意味着它不能在一個不同的文件。即使它必須位於同一個文件中,您仍然可以將實現與接口分開。 – 2013-05-09 20:11:25
@MooingDuck,True,文件!= TU。我正在考慮更多地在通用鏈接文件中定義它。我自己也喜歡在類定義之外定義模板,這就是爲什麼我幾乎說過。我認爲OP將會走向第一個點,它會失敗。 – chris 2013-05-09 20:16:00