Peut-on supposer dans un contexte non évalué que (::new (std::declval< void * >()) T())->~T()
est sémantiquement (au sens de noexcept
, mais pas dans le sens du type d'expression) équivalent à T()
? Supposons que ni global, ni classe-portée operator new
sont surchargés, si elle marmonne beaucoup.Placement nouveau plus destructeur et initialisation de valeur simple noexcept sémantique
Souvent dans les traits de type T()
utilisés à l'intérieur de l'opérateur noexcept()
pour déterminer si seul le constructeur séparé est noexcept
ou non. Sûrement c'est faux.
Pour éviter la perte de généralité, on peut supposer que T()
est ici un appel d'un constructeur par défaut ou de tout autre constructeur.
Fair. Mon erreur. Je veux considérer seulement le sens «noexcept». S'il vous plaît permettez-moi de modifier la question. – Orient