Sono un po 'confuso con i distruttori e noexcept
. La mia comprensione è stata che in C++ 11 qualsiasi distruttore, incluso definito dall'utente, è implicitamente noexcept(true)
, anche se abbiamo throw
da esso. E si deve specificare esplicitamente noexcept(false)
se vogliono che sia così per qualche motivo.Destructors e n. Eccetto
Quello che sto vedendo è che al contrario - con GCC 4.7.2, il distruttore definito dall'utente, non importa quanto primitiva sia la classe e il distruttore, è implicitamente noexcept(false)
. Cosa mi manca qui? C'è qualche trucco nascosto con i distruttori definiti dall'utente?
12,4/3: "Una dichiarazione di un distruttore che non ha una specifica delle eccezioni è implicitamente considerata per avere la stessa specifica di eccezione di una dichiarazione implicita (15.4). " cioè un distruttore è solo "noexcept (true)" se tutti i membri e le basi hanno un distruttore no-outs. – ipc