When CRTP is used inside a template, (or generally when a template parameter is passed as a base class template argument), is it impossible to name the base\'s member templates
The following works fine with C++11:
#include
template< typename d >
struct base {
template< typename >
struct ct {};
template< typename >
void ft() {std::cerr << "cheesecake" << std::endl;}
};
template< typename x >
struct derived : base< derived< x > > {
template
using ct = typename derived::base::template ct; // new in C++11
using derived::base::ft;
};
int main()
{
derived::ct c;
derived a;
a.ft();
}
If that is not what you wanted, can you please give an example of how you would want to use ct and ft?