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

Как мне написать конечный возвращаемый тип с поддержкой ADL или спецификацию noexcept?
Представьте, что я пишу какой-то шаблон контейнера или что-то в этом роде. И пришло время специализироваться std::swap на этом. Как порядочный гражданин, я включу ADL, сделав что-то вроде этого: template <typename T> void...
1274 просмотров

Чем полезен noexcept?
Я видел, что C ++ 11 добавил ключевое слово noexcept . Но я не очень понимаю, почему это полезно. Если функция выбрасывает, когда она не должна вызывать - зачем мне сбой программы? Итак, когда я должен его использовать? Кроме того, как...
5115 просмотров
schedule 13.11.2021

Объявление C ++ noexcept изменяет вывод шаблона
Я пытался подтвердить пример на стр. 91 книги «Эффективный современный C ++» и натолкнулся на странную проблему. Этот код template<typename C> void doStuff(C& a, C& b) noexcept(noexcept(doStuff(a.front(), b.front()))) {...
441 просмотров
schedule 30.09.2021

noexcept посещение для std :: variant
Для некоторых стандартных библиотечных классов доступ к частям их содержимого может законно завершиться ошибкой. Обычно у вас есть выбор между некоторым потенциально бросающим методом методом и тем, который помечен noexcept . Последний избавляет от...
722 просмотров
schedule 07.10.2021

Должен ли я добавлять noexcept к каждой функции, если нет исключений?
Я никогда не использую исключения в своем коде и никогда не буду. Разумно ли добавлять noexcept ко всем возможным функциям? Что произойдет, если пользователь, который использует мой код, использует исключения (сожалею его), где есть внутренние...
29 просмотров
schedule 02.04.2022

Подразумевает ли constexpr noexcept?
Подразумевает ли спецификатор constexpr спецификатор noexcept для функции? Ответ на аналогичный вопрос говорит" да "в отношении inline спецификатора, но статья Эрика Ниблера заставляет задуматься о возможном ответе на текущую. На мой...
4632 просмотров
schedule 11.04.2022

Нет, кроме классов, использующих строковый поток
У меня есть класс с членом std::stringstream : class Buffer { std::stringstream ss_; }; Его конструктор перемещения Buffer::Buffer(Buffer&& buf) : ss_(std::move(buf.ss_)) { } Я подозреваю, что операция перемещения не...
173 просмотров

Как использовать noexcept в C++ или как это работает?
Я не могу понять использование и назначение ключевого слова noexcept в С++ 11/14. Я так понимаю, что это сигнатура функции, которая не выдает exceptions . Но действительно ли это работает? Посмотрите на этот код ниже: #include...
12252 просмотров
schedule 31.05.2022

Как объявить noexcept, если только функция-член атрибута не является исключением?
#include <vector> class A { std::vector<int> vec; void swap( A & other) noexcept(noexcept(vec.swap(other.vec))) { vec.swap(other.vec); } }; int main() { } Этот код компилируется под clang(3.4), но не...
399 просмотров
schedule 27.07.2022

Разрешено ли реализациям стандартной библиотеки C++ усиливать спецификации noexcept?
В соответствии со стандартом C++ разрешено ли реализациям стандартной библиотеки C++ усиливать noexcept спецификации методов и других функций стандартной библиотеки C++, как это определено стандартом? Например, если стандарт C++ определяет...
414 просмотров

Почему по умолчанию принимается конструктор перемещения noexcept?
Предположим следующий код C ++ 17: #include <type_traits> namespace dtl { struct One { explicit One(int); ~One() = default; One(const One &) = delete; auto operator=(const One &) -> One & =...
271 просмотров

Использование нового размещения на nullptr в контексте decltype() или оператора noexcept()
Разрешено ли Стандартом писать decltype(::new (nullptr) T(std::declval< Args >()...)) или noexcept(::new (nullptr) T(std::declval< Args >()...)) ? Особо интересует расстановка new на nullptr правильности. Учитывая следующий код:...
480 просмотров
schedule 08.09.2022

Могу ли я пометить операцию перемещения классов noкроме тех случаев, когда она содержит стандартный контейнер?
Идиоматический способ реализации операций перемещения в классах со стандартным элементом-контейнером не может быть noexcept и, следовательно, не может быть перемещен с помощью таких операций, как vector.push_back() . Или я ошибаюсь? Чтобы...
620 просмотров

function-try-block и noexcept
Для следующего кода struct X { int x; X() noexcept try : x(0) { } catch(...) { } }; Visual Studio 14 CTP выдает предупреждение предупреждение C4297: 'X::X': предполагается, что функция не генерирует...
1205 просмотров
schedule 09.02.2023

Прибыль от noexcept с минимальными усилиями
Я понимаю, что контейнеры могут оптимизироваться для типов, не имеющих конструктора перемещения/назначения/обмена. Но есть ли практические причины (кроме документации) для указания других операций как noexcept ? В частности, меня интересует, есть...
121 просмотров
schedule 31.03.2023

почему объектный код, сгенерированный для noexcept и throw(), одинаков в С++ 11?
Код с использованием noexcept. //hello.cpp class A{ public: A(){} ~A(){} }; void fun() noexcept{ //c++11 style A a[10]; } int main() { fun(); } Код с использованием throw() . //hello1.cpp class A{ public: A(){}...
256 просмотров
schedule 23.11.2022

Приведение указателя функции к указанному указателю функции noexcept
Скажем, у меня есть эти объявления: using fp_type = void(*)(); using fp2_type = void(*)() noexcept; а также void func(){} fp_type fp(func); Актерский состав fp2_type(fp) хорошо сформирован? Наоборот (преобразование указателя...
454 просмотров
schedule 13.07.2023

Можно ли объявить функцию main с помощью спецификатора noexcept?
Допустим ли следующий код в C++? int main() noexcept { } И clang++ 3.8.0 , и g++ 7.2.0 компилировать нормально (с -std=c++14 -O0 -Wall -Wextra -Werror -pedantic-errors флагами компиляции). Можно ли использовать сложные условия...
1365 просмотров
schedule 08.11.2022

Как статический указатель функции бросания на noexcept в С++ 17?
C++17 делает noexcept частью типа функции. Он также допускает неявное преобразование указателей функций noexcept в указатели функций, потенциально вызывающие генерацию. void (*ptr_to_noexcept)() noexcept = nullptr; void (*ptr_to_throwing)() =...
280 просмотров

Почему компиляторы не могут обнаружить несоответствие использования «noexcept»?
Ниже приведен код, в котором компиляторы частично обнаруживают несоответствие между объявлением метода (т.е. со спецификатором noexcept) и реализацией метода. Компиляторы выдают предупреждение для метода "bazExcept()", но ничего не сообщают для...
113 просмотров
schedule 14.03.2023