C++11 added alias templates such as:
template using identity = T;
template using EnableIf = typename std
Best way I know to remove template
is made simple warper that will do it for you:
template<typename Meta, typename U>
using apply = typename Meta::template Template<U>;
and every where you previously used template<typename> class Template
replace it with typename Meta
.
template<typename Meta>
void do_more_stuff()
{
apply<Meta, int>::func(); //=== Meta::template Template<int>::func();
}
template<typename T>
void do_stuff() {
do_more_stuff< my_meta<T> >();
do_more_stuff< my_meta<T> >();
};