2011-10-02 18 views
17

In questo codice di esempio:Costruttore con by-valore di parametro & noexcept

explicit MyClass(std::wstring text) noexcept; 

È l'uso di noexcept qui è corretto? wstring può potenzialmente avviare la costruzione ma il lancio avviene prima che siamo nel costruttore o mentre siamo nel costruttore?

MODIFICA: Supponiamo che questo possa essere generalizzato a qualsiasi funzione che assume un parametro di valore.

risposta

20

La costruzione e la distruzione dei parametri di funzione avviene nel contesto del chiamante. Quindi no, se la costruzione di text genera, questa non è una violazione di noexcept.

Presto la gente ha voluto commentare e chiedere un preventivo spec :) Quindi io vi darò 5.2.2p4

L'inizializzazione e la distruzione di ogni parametro avviene nel contesto della funzione di chiamata .

Problemi correlati