Вопросы по теме 'noexcept'

Должен ли я объявить конструктор копирования моих исключений noexcept?
В статье More Effective C++ Скотт Мейерс говорит: C++ указывает, что объект, созданный как исключение, копируется. Тогда я предполагаю, что если конструктор копирования выбрасывает исключение, в свою очередь, вызывается std::terminate ,...
2155 просмотров

Спецификатор Noexcept: почему нет проверки времени компиляции?
Я изучаю спецификатор noexcept и задаюсь вопросом о причине некоторых его дизайнерских решений. В частности, причина, по которой он не выполняет такие же проверки времени компиляции, как, например, спецификатор constexpr . Я объясню это...
103 просмотров
schedule 03.06.2022

Принудительно использовать noexcept для std::function?
Этот код компилируется и запускается, выдавая int : #include <functional> void r( std::function<void() noexcept> f ) { f(); } void foo() { throw 1; } int main() { r(foo); } Однако я бы хотел, чтобы компилятор отклонил...
2109 просмотров
schedule 12.07.2023

Как спецификатор исключения в операторе присваивания перемещения может повлиять на конструктор перемещения?
Я тестировал GCC 5.2 и clang 3.6, оба в режиме С++ 14, и они дают одинаковый результат. Для следующего кода #include <iostream> #include <type_traits> struct S { // S& operator= (S&&) noexcept { return *this; } };...
319 просмотров

Исключение C++, неопределенное поведение и отсутствие исключений
Об этой функции int test(int a,int b) { return a/b; } Если я вызову test(2,1) , ничего не произойдет. Но если я вызову test(2,0) , это вызовет неопределенное поведение. В результате я должен определить его как noexcept ? Кстати,...
496 просмотров

Почему спецификатор noexcept не включен в объявленный метод?
Пытаясь разработать некоторые классы без исключений, у меня есть структура наследования, подобная этой, но я обнаружил, что спецификатор noexcept практически не помогает при работе с функциями-членами, поскольку спецификатор не ограничен областью...
332 просмотров
schedule 12.07.2022

Почему std::unique_ptr явно не требует удаления без исключений?
В документации сказано, что Deleter должен быть: не строить nothrow callable (потому что он вызывается из ~unique_ptr() noexcept неразрушаемый (по указанной выше причине) Мой вопрос в том, почему uniqut_ptr определено, чтобы...
187 просмотров
schedule 28.09.2022

скопировать elision возвращаемых значений и noexcept
У меня есть такой шаблон функции: template <typename T> constexpr auto myfunc() noexcept { return T{}; } Гарантируется ли, что этот шаблон функции будет исключен из-за исключения копии? Если внутри конструктора генерируется...
125 просмотров
schedule 27.07.2022

noexcept поведение функций constexpr
Формулировка [expr.unary.noexcept] изменена в C ++ 17 . Ранее ( n4140, 5.3.7 оператор noexcept [expr.unary.noexcept] ), мой акцент : Результатом оператора noexcept будет false, если в потенциально оцениваемом контексте выражение...
245 просмотров

Конструктор неявного перемещения должен быть по возможности без исключения.
В основном по стандарту: Конструктор-наследник (12.9) и неявно объявленная специальная функция-член (раздел 12) имеют спецификацию исключения . Если f является наследующим конструктором или неявно объявленным конструктором по умолчанию,...
49 просмотров
schedule 29.07.2023

Почему немедленные функции не имеют значения noexcept по умолчанию и почему им разрешено быть noexcept (false)?
Начиная с C ++ 20, мы можем определять немедленные функции, используя спецификатор consteval . Когда функция объявляется consteval , каждый вызов этой функции должен создавать константу времени компиляции, в противном случае программа имеет...
137 просмотров
schedule 16.06.2022

Является ли noexcept бесполезным, если отказ от броска не требует затрат?
Является ли спецификатор noexcept бесполезным, если ваша реализация имеет модель исключений с нулевой стоимостью (если ничего не выбрасывается)? Каков пример, когда отсутствие noexcept имеет последствия?
151 просмотров
schedule 19.07.2023