ich mit C++ 0x variadische Vorlagen zu experimentieren, wenn ich auf dieses Problem gestoßen:Kann ein Template-Parameterpaket "gespeichert" werden, ohne es zu erweitern?
template < typename ...Args >
struct identities
{
typedef Args type; //compile error: "parameter packs not expanded with '...'
};
//The following code just shows an example of potential use, but has no relation
//with what I am actually trying to achieve.
template < typename T >
struct convert_in_tuple
{
typedef std::tuple< typename T::type... > type;
};
typedef convert_in_tuple< identities< int, float > >::type int_float_tuple;
GCC 4.5.0 gibt mir einen Fehler, wenn ich versuche, den Template-Parameter Pack typedef.
Grundsätzlich möchte ich das Parameter-Paket in einem Typedef "speichern", ohne es zu entpacken. Ist es möglich? Wenn nicht, gibt es einen Grund, warum das nicht erlaubt ist?
Schön, sehr ähnlich zu dem, was das OP ursprünglich versuchte. –
Sehr gute Problemumgehung, ich habe nicht darüber nachgedacht, eine teilweise Template-Spezialisierung zu verwenden! –
@GMan: schnelle Frage ...Das war hilfreich, aber sollte die teilweise spezialisierte Version tatsächlich 'typedef typename convert_in_tuple :: type type' sein, oder ist das egal? –
Jason