È questo C++ legale?Un parametro di un modello di template template può causare ombreggiamento?
template <typename T, template <typename T> class>
struct S { };
Clang (3.7.1) respinge, lamentano il secondo T
ombre primo T
. GCC sembra non preoccuparsene e penso che sia ragionevole. Penso che sia solo il numero di parametri che conta in un parametro template template.
- http://goo.gl/51bHVG (gcc.godbolt.org)
perché è necessario utilizzare 'T' due volte? se vuoi usare 'T' nel secondo template puoi scrivere' template class> ' –
@DavidHaim Non è obbligatorio, ma quando si suppone che il primo parametro sia dato al secondo parametro che è un modello di modello, ha senso utilizzare lo stesso nome (o almeno un simile) per il parametro del modello nidificato. Il tuo suggerimento è interessante, non ho mai provato a specificare un parametro predefinito per un parametro template template. Cosa fa rispetto a 'template class>'? –
nodakai
Mi chiedo qual è la motivazione di guida per chi fa ricerca e distrugge le parole tag in un titolo di post ?? Forse sono ugualmente entusiasti di sostituire 'NULL' in' nullptr'? – nodakai