template <template <typename> class T>
class A
{
};
template <typename T>
class B
{
A<B> x;
};
不能編譯,我想因爲A<B>
被解釋爲B
的範圍內A<B<T> >
。
那麼,你如何通過B
作爲範圍內的模板模板參數?
template <template <typename> class T>
class A
{
};
template <typename T>
class B
{
A<B> x;
};
不能編譯,我想因爲A<B>
被解釋爲B
的範圍內A<B<T> >
。
那麼,你如何通過B
作爲範圍內的模板模板參數?
試試這個:
template <typename T>
class B
{
A<::B> x; // fully qualified name for B
};
根據C++標準14.6.1/2,你應該使用模板的正常名稱(即從封閉範圍內,而不是注入的類名名) 。
謝謝。那樣做了。 – uj2 2010-06-16 11:00:34
不錯:)值得注意的是':: B'之前的空間是需要的,但:) – 2010-06-16 22:15:55
是不是簡單地指定下面的工作?因爲T可以是任何類型的簡單或模板類型也是...........代碼____ 模板 A類 { } –
Pardeep
2010-06-16 10:32:17
@Pardeep:我沒有完全跟着你。 'A'的T是一個模板模板參數。這與'template class A {}'非常不同。 –
uj2
2010-06-16 10:37:54
你爲什麼想要?我從來沒有看到任何用途。 – Puppy 2010-06-16 10:40:00