我正在尝试专注Outer<P>::Inner
于如下所示的类型P
,并且它似乎可以工作(在 gcc 4.5.3 和 Visual Studio 2008 上),直到Inner i
在Outer<P>
. 有没有一种方法可以在Inner i
没有专门的情况下声明Outer<P>
?
#include <cstdlib>
#include <iostream>
template<typename T>
struct Outer
{
Outer()
{
Inner();
}
struct Inner;
//Inner i; // compilation error
};
template<>
struct Outer<bool>::Inner
{
Inner()
{
std::cout << "Specialization ..." << std::endl;
}
};
template<typename T>
struct Outer<T>::Inner
{
Inner()
{
std::cout << "Generic version ..." << std::endl;
}
};
int main()
{
Outer<char> o2;
Outer<bool> o1;
return EXIT_SUCCESS;
}