C ++ richiama il costruttore di template esplicito

Puoi dirmi come richiamare esplicitamente il costruttore di template (nella lista di inizializzazione)? per esempio:

struct T { template T(); }; struct U { U() : t() {} //does not work T t; }; 

Grazie

Non è ansible. Lo Standard ha anche una nota su questo al 14.8.1/7

[Nota: poiché l’elenco degli argomenti del modello esplicito segue il nome del modello di funzione e poiché i modelli di funzione dei membri di conversione e i modelli di funzione del membro di costruzione vengono chiamati senza utilizzare un nome di funzione, non è ansible fornire un elenco di argomenti del modello esplicito per questi modelli di funzione. ]

Se riesci a conviverci, puoi risolverlo

 struct T { template T(identity); }; struct U { U() : t(identity()) {} T t; }; 

Data identity come è definita in boost

 template struct identity { typedef T type; };