我有一个模板类在另一个模板类内部。如何编写一个模板函数,可以接受内部/外部模板类的任意组合?
template <class X>
struct A
{
template <class Y>
struct B
{
int q;
};
};
template <class X, class Y>
int f( typename A<X>::template B<Y>& ab )
{
return ab.q;
}
int g( A<char>::B<short>& ab )
{
return f( ab ); // Error: Could not deduce template argument
}
template <class T> int f( T& )
。当T
是A::B
时,我需要另一个f()
的重载。我将尝试使用std::enable_if
来解决这个问题... - Barnetttemplate <class T> int f( T& t ) { return sizeof(t); }
,但现在我需要另一个重载的f()
函数,它将返回A<X>::B<Y>::q
。@largest_prime_is_463035818 - Barnetttemplate <class T, class = typename T::X_type, class = typename T::Y_type> int f( T& )
使其正常工作。 - Barnett