Betrachten Sie den folgenden Code ein:Ist es möglich, einen Vorlagenalias zu erstellen?
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 > >();
}
Frage: Gibt es eine Möglichkeit, eine Art von "Vorlage alias" ähnlich einem Typ alias zu erstellen? (siehe obiges Beispiel)
Also, Frage: Ich erinnerte mich, als ich schrieb, dass ich diese genaue Frage zuvor gestellt habe. Sollte ich meine http://stackoverflow.com/questions/17356487/äquivalent-of-using-aliases-for-templates als ein Duplikat von diesem schließen? Oder umgekehrt? :) – Yakk
@Yakk Obwohl Ihre Frage ziemlich ähnlich ist und in der gleichen Gegend, ich glaube nicht, dass es wirklich ein Duplikat ist, wie Sie versucht haben, das Schlüsselwort 'template' an einem anderen Ort loszuwerden. Wenn eine Lösung für einen * existiert *, * könnte * das andere Problem ebenfalls lösen - aber es scheint, dass es keine Lösung gibt. –