2011-10-02 14 views
17

W tym przykładzie kodu:Konstruktor z parametru przez wartość & noexcept

explicit MyClass(std::wstring text) noexcept; 

Czy korzystanie z noexcept tutaj jest prawidłowy? wstring może potencjalnie rzucić na budowę, ale czy rzut się wydarzy, zanim znajdziemy się w konstruktorze lub gdy jesteśmy w konstruktorze?

EDYCJA: Załóżmy, że można to uogólnić na dowolną funkcję pobierającą parametr o wartości.

Odpowiedz

20

Budowa i niszczenie parametrów funkcji odbywa się w kontekście osoby dzwoniącej. Więc nie, jeśli konstrukcja text rzuca, nie jest to naruszenie noexcept.

Wkrótce ludzie będą komentować i poprosić o spec cytat :) Więc dam ci 5.2.2p4

inicjalizacji i zniszczenia każdego parametru występuje w kontekście funkcji wywołującego w .