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

Когда мне действительно следует использовать noexcept?
Ключевое слово noexcept может быть соответствующим образом применено ко многим сигнатурам функций, но я не уверен, когда мне следует рассмотреть возможность его использования на практике. Судя по тому, что я читал до сих пор, добавление noexcept...
126988 просмотров
schedule 15.08.2022

Как создать псевдоним для указателя функции noexcept?
Я хотел бы сделать это: using function_type = void (*)(void*)noexcept; Но я получаю сообщение об ошибке «Спецификации исключений не допускаются в псевдонимах типов». (лязг в версии 6.1 Xcode) Есть ли обходной путь для создания псевдонима...
1960 просмотров
schedule 14.03.2022

С++ пропускает спецификатор `noexcept` по сравнению с `noexcept (false)`, каково их точное значение?
Если я помечаю функцию как noexcept(false) или любое другое выражение, которое оценивается как ложное, что это значит? (1) гарантирую ли я компилятору, что функция может генерировать исключение? (2) или я ничего не гарантирую, может ли она...
1457 просмотров
schedule 03.04.2024

С++, почему в контексте конструкторов перемещения и операторов присваивания перемещения требуется noexcept для включения оптимизации?
Рассмотрим следующий класс с конструктором перемещения и оператором присваивания перемещения: class my_class { protected: double *my_data; uint64_t my_data_length; } my_class(my_class&& other) noexcept :...
3119 просмотров
schedule 17.07.2022

noexcept, наследование конструкторов и недопустимое использование неполного типа, который на самом деле завершен
Я не уверен, является ли это ошибкой компилятора GCC или предполагаемым поведением noexcept . Рассмотрим следующий пример: struct B { B(int) noexcept { } virtual void f() = 0; }; struct D: public B { using B::B; D()...
555 просмотров

noexcept функции, возвращающей класс, имеющий бросающий деструктор
В следующем коде я думал, что утверждение не должно срабатывать, но оно срабатывает. struct A { ~A() noexcept(false); }; A f() noexcept; int main() { static_assert(noexcept(f()), "f must be noexcept"); } Функция f() не является...
135 просмотров
schedule 30.05.2023

Есть ли разница между спецификацией noexcept и empty throw для лямбда-выражения?
Учитывая пример: double values[] {2.5, -3.5, 4.5, -5.5, 6.5, -7.5}; std::vector<double> squares(std::end(values) - std::begin(values)); std::transform(std::begin(values), std::end(values), std::begin(values), std::begin(squares),...
921 просмотров
schedule 14.09.2022

Разве не имеет смысла перегрузить noexcept?
Я пытаюсь понять функцию noexcept. Я знаю, что это может сбивать с толку, но, кроме того, это не может быть выведено из вызывающей функции, когда это возможно. Это нерабочий пример этой ситуации, void f(){} void f() noexcept{} // not allowed...
659 просмотров

Использовать зависимый оператор noexcept
Интересно, можно ли использовать оператор C++11 noexcept для определения спецификатор noextcept e. грамм. деструктор, вызывающий метод другого класса (например, std::allocator::deallocate): template <class DelegateAllocator =...
66 просмотров
schedule 24.07.2023

Каковы побочные эффекты пометки производной реализации noexcept, если интерфейс не
У нас есть класс, который реализует IUnknown (или любой интерфейс, которым мы не владеем). Мы начали помечать большинство/все наши методы словом noexcept для любой потенциальной оптимизации, так как мы все равно не выбрасываем никаких исключений;...
226 просмотров
schedule 27.07.2022

Почему старая спецификация пустого броска была переписана с новым синтаксисом `noexcept`?
Название говорит само за себя: почему C++ отказался от полностью удовлетворяющей, полезной, пустой спецификации throw throw() , чтобы заменить ее другим синтаксисом, добавив новое ключевое слово noexcept ? Спецификация пустого броска — это...
136 просмотров

Как обнаружить метод noexcept с помощью SFINAE
Я спрашиваю о варианте (популярного) вопроса - обнаружении существования метода класса. Я прочитал много ответов здесь, в SO, и большинство решений (после С++ 17) выглядят как это : #include <type_traits> template<class ...Ts>...
60 просмотров
schedule 12.08.2022