2012-10-23 2 views

risposta

13

La parentesi vuota (()) renderà una dichiarazione di funzione solo se è scritta come tale nel codice sorgente.

§14.5.3 [temp.variadic] p6 cita anche questo:

L'istanziazione di un pacchetto di espansione che non è un sizeof ... espressione produce un elenco E1, E2, ..., EN, dove N è il numero di elementi nei parametri di espansione della confezione. [...] Quando N è zero, l'istanziazione dell'espansione produce una lista vuota. Tale istanziazione non altera l'interpretazione sintattica del costrutto di inclusione, anche nei casi in cui l'omissione della lista interamente sarebbe altrimenti mal formata o si tradurrebbe in un'ambiguità nella grammatica. [Esempio:

template<class... T> struct X : T... { }; 
template<class... T> void f(T... values) { 
X<T...> x(values...); 
} 
template void f<>(); // OK: X<> has no base classes 
        // x is a variable of type X<> that is value-initialized 

-end esempio]

Vedere in particolare il secondo commento nel codice di esempio.

+0

ohh come potrei averlo perso! Grazie :-) –