Ho scritto un modello variadic che accetta un numero variabile di char
parametri, vale a direC++: una macro può espandere "abc" in "a", "b", "c"?
template <char... Chars>
struct Foo;
Mi stavo chiedendo se ci fossero trucchi macro che mi permettesse di creare un'istanza di questo con una sintassi simile al seguente:
Foo<"abc">
o
Foo<SOME_MACRO("abc")>
o
Foo<SOME_MACRO(abc)>
ecc
Fondamentalmente, tutto ciò che ti impedisce di dover scrivere i caratteri singolarmente, in questo modo
Foo<'a', 'b', 'c'>
Questo non è un grosso problema per me in quanto è solo per un giocattolo programma, ma ho pensato di chiedere comunque.
'" abc "' è essenzialmente lo stesso di '' a ',' b ',' c ',' \ 0'', ad eccezione del puntatore. –
Solitamente non è stato possibile creare un'istanza di un modello in C++ utilizzando una stringa C non elaborata se il modello è stato parametrizzato su un char *. Lo hanno risolto in C++ 0x? Se è così, penso di avere un modo di fare questa espansione correttamente. – templatetypedef
@Ignacio: Lo so, ma non puoi scrivere '" abc "' per un argomento template 'char ...'. @templatetypedef: Il modello non è parametrizzato su 'char *', è un modello variadico su 'char ...' –