Bonjour
Et en utilisant typename dans
template<typename _T,typename _T::keyname _K>
pour spécifier que _T::keyname est bien un type ?
J'ai pu instancier le code suivant sous VS2005 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| struct MyStruct
{
enum keyname {first,second};
template<keyname _E>
void make() const;
template<>
void make<first>() const
{
}
template<>
void make<second>() const
{
}
};
template<typename _T,typename _T::keyname _K>
struct MasterStruct
{
template<typename P>
void foo/*()*/(P const & v) const
{
v.make/*_key*/<_K>();
}
};
/* ... */
MasterStruct<MyStruct,MyStruct::first> Ms;
MyStruct Test;
Ms.foo(Test); |
Partager