Rozważmy następujący kod:Czy można utworzyć alias szablonu?
template< template< typename ... > class ... Ts >
struct unite
{
template< typename ... T >
struct type
: Ts< T ... > ...
{ };
};
// This does not work as ::type does not name a type, but a template:
// template< template< typename ... > class ... Ts >
// using unite_t = typename unite< Ts ... >::type;
template<typename> struct debug_none {};
template<typename> struct debug_cout {};
template< typename ... > struct raise_demangled {};
template< typename ... > struct raise_specialized {};
template< typename, typename = int > struct match_default {};
template< template< typename ... > class Control >
void f()
{}
int main()
{
f< unite< debug_none, raise_demangled, match_default >::type >();
// Is there any way to create something like unite_t which works like this:
// f< unite_t< debug_none, raise_demangled, match_default > >();
}
Pytanie: Czy istnieje jakiś sposób, aby stworzyć pewnego rodzaju "Szablon alias" podobny do typu alias? (patrz unite_t
w powyższym przykładzie)
Więc, pytanie: przypomniałem sobie, jak napisałem, że wcześniej zadałem to dokładne pytanie. Czy powinienem zamknąć mój http://stackoverflow.com/questions/17356487/equivalent-of-using-aliases-for-templates jako duplikat tego? Lub odwrotnie? :) – Yakk
@Yakk Chociaż twoje pytanie jest dość podobne iw tym samym obszarze, nie sądzę, że jest to duplikat, ponieważ próbujesz pozbyć się słowa kluczowego "template" w innym miejscu. Jeśli rozwiązanie dla jednego * istnieje *, to * może * również rozwiązać inny problem - ale wydaje się, że nie ma rozwiązania. –