Outer<P>::Inner
以下に示すように型に特化しようとしていますが、でメンバー変数が宣言さP
れるまで、(gcc4.5.3およびVisualStudio 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;
}