Код: Выделить всё
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} {}
Подробнее здесь: https://stackoverflow.com/questions/797 ... -functions
Мобильная версия