1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| template<typename U>
struct TTest;
template<typename T1, typename T2, typename T3, template<typename, typename, typename> class T>
struct TTest< T<T1, T2, T3> >
{ /*...*/ }; // et l'on a accès à T1, T2, T3
template<typename T1, typename T2, typename T3, template<typename, typename, typename> class T>
struct TTest_Bad
{ /*...*/ };
TTest<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > test1; // ok
TTest<std::string> test2; // ok aussi et un peu plus lisible
TTest_Bad<char, std::char_traits<char>, std::allocator<char>, std::basic_string> testbad; // seule écriture possible |
Partager