Могут ли нарушения контракта привести к STD :: прекратить функции noExcept?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Могут ли нарушения контракта привести к STD :: прекратить функции noExcept?

Сообщение Anonymous »

У меня есть какой-то код в следующем стиле: < /p>

Код: Выделить всё

struct S {
private:
T* resource;

public:
S(T* r) : resource{r} {
if (r == nullptr) {
throw std::invalid_argument(":(");
}
}
};
< /code>
Я, очевидно, не должен пометить этот конструктор noexcept < /code>, потому что он бросает исключение.
Однако что, если я напишу это с помощью C ++ 26 контрактов?S(T* r) noexcept pre(r != nullptr) : resource{r} {}
basic.contract.handler], похоже, не гарантирует, что обработчик нарушения контракта не нарушает. Могу ли я сделать этот конструктор noexcept ? Применяется ли noExcept только к корпусу функции, а не к контрактам?


Подробнее здесь: https://stackoverflow.com/questions/797 ... -functions
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»