以下のコードでは、 Foo<T>::setValuewhereTがTYPEegBar::TYPEおよびBaz:TYPE.
Foo<T>::setValueしたがって、名前を付けずに特殊化するのを助けていただき、Barand Baz、そのようなクラスが数十ある可能性があるためです。
class Bar
{
public:
enum TYPE{ ONE , TWO };
};
class Baz
{
public:
enum TYPE{ SIX , TEN };
};
template<typename T>
class Foo
{
public:
void setValue(){} // Need a different setValue if T is a class enum
private:
T m_value;
};
int main()
{
Foo<int> f1;
Foo<Bar::TYPE> f2;
Foo<Baz::TYPE> f3;
return EXIT_SUCCESS;
}