假設我有以下代碼:不同的行爲 - 模板的模板參數
template <template <typename> class T>
class A {};
template <typename T>
class B
{
A<B> instance;
};
int main()
{
B<int> instance;
}
GCC 4.7.2和GCC 4.8.0編譯此代碼確定,而ICC 13.0.1和鐺3.2給了我一個錯誤(clang需要:: B而不是B,而icc在模板實例中也需要<之後的空格)。
誰是對的?
我找到了關於它的線程(Template class that refers to itself as a template template parameter?),但我無法理解該標準的14.6.1/2並且還看到了LLVM錯誤14350(http://www.mail-archive.com/[email protected]/msg21095.html)。那麼,鏗鏘和英特爾在這裏錯了嗎?
我可以在這種情況下同時使用:: B和B兩種形式嗎? – FrozenHeart 2013-02-14 20:15:50
@NikitaTrophimov,當你想引用模板時,你可以使用':: B'。 – rici 2013-02-14 20:33:06