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

Почему операторы векторного доступа не указаны как noexcept?
Почему функции-члены operator[] , front и back std::vector не указаны как noexcept ?
4105 просмотров
schedule 05.07.2023

Использование спецификатора noexcept в объявлении и определении функции?
Рассмотрим следующую функцию: // Declaration in the .h file class MyClass { template <class T> void function(T&& x) const; }; // Definition in the .cpp file template <class T> void MyClass::function(T&& x) const;...
5197 просмотров
schedule 18.12.2022

Почему оператор * для unique_ptr не является исключением?
В C++11 и черновике C++14 операторы разыменования ( operator* и operator-> ) для shared_ptr оба являются noexcept . Но для unique_ptr operator-> это noexcept , а operator* нет. Почему operator* не вместо unique_ptr noexcept...
128 просмотров
schedule 16.04.2022

Какие алгоритмы и контейнеры в C++ 11 STL могут работать быстрее, если тип — noexcept?
На работе возник спор о том, насколько важно использовать noexcept. Мы все знаем, что noexcept на самом деле не очень много делает для оптимизатора компилятора, за исключением внешнего определенного кода, который в противном случае компилятор должен...
707 просмотров
schedule 17.03.2023

Каковы правила noexcept для конструкторов перемещения, определенных по умолчанию?
Особенно в связи с std::vector важно, чтобы типы были noexcept перемещаемыми, когда это возможно. Поэтому при объявлении конструктора перемещения = default , как в struct Object1 { Object1(Object1 &&other) = default; };...
1795 просмотров

Может ли функция, помеченная как noexcept, иметь внутри исключения?
Допустим, у меня есть функция, помеченная как noexcept , но внутри есть строка кода, которая может генерировать ошибки. Эта строка кода будет находиться в блоке try, и исключение будет перехвачено. Это что-то вызывает? void MyFunc() noexcept {...
1893 просмотров
schedule 26.08.2022

Программа без конструктора noexcept принята gcc, отклонена clang
Код: struct T { T() {} }; struct S { T t; S() noexcept = default; }; int main() { // S s; } g ++ 4.9.2 принимает это без ошибок или предупреждений, однако отчеты clang 3.6 и 3.7 для строки 7: error: exception specification...
5908 просмотров
schedule 08.04.2022

Реализация массива фиксированного размера во время выполнения. Должны ли перемещаться исключения ctor и swap?
Проблема с std::array заключается в том, что он имеет фиксированный размер времени компиляции. Мне нужен контейнер, который может быть создан с динамическим размером, но этот размер остается фиксированным на протяжении всего срока службы контейнера...
40 просмотров
schedule 12.05.2023

Может ли бросить неинициализированный конструктор std::Optional или boost::Optional?
Можно ли объявить любой из следующих методов шаблона noexcept ? template <typename T> std::optional<T> foo(const T& value) // noexcept? { try { // code possibly returning a T or a std::nullopt } catch(...) {...
1091 просмотров
schedule 18.04.2024

Функции превращаются в noexcept в С++ 17?
Согласно этому ответу , спецификации исключений станут частью типа функции в C++17. Означает ли это, что спецификации исключений для многих функций также изменятся, например. функции в заголовках совместимости C получают спецификации noexcept ?...
528 просмотров

Как смоделировать игнорирование ложных срабатываний Coverity Scan C++ «noexcept»?
Когда Coverity начинает распознавать C++11 noexcept как throw() , он производит ложные срабатывания в коде, вызывающем сторонние библиотеки, такие как Boost. Более того, некоторый код преднамеренно намеревается аварийно завершать работу при...
1054 просмотров
schedule 30.10.2022

В каких случаях компилятор C++ выводит noexcept?
Предположим, компилятор C++ компилирует функцию, определение которой доступно в той же единице трансляции, что и ее вызов. Предположим, что он не выбрасывает сам себя и не вызывает функцию, о которой известно, что она выбрасывает. Предположим также,...
455 просмотров

Спецификатор noexcept с построением аргументов по умолчанию
Возьмите следующий пример кода: void test(const Item& item = Item()) { ... } Предположим, что после того, как item было передано функции, это не может генерировать. Вопрос: функция должна быть помечена noexcept или...
438 просмотров
schedule 22.10.2022

Может ли конструктор по умолчанию std::vector генерировать исключение
Если я создам пустой std::vector с помощью конструктора по умолчанию (и распределителя по умолчанию), может ли он вызвать исключение? В общем, выделение места для элементов контейнера может вызвать исключение (которое будет std::bad_alloc ). Но...
1243 просмотров
schedule 30.09.2022

Кто управляет исключением, генерируемым конструктором копирования в параметрах?
Предположим, у меня есть эта функция void foo() noexcept { // Safely noexcept code. } И затем этот класс: class Bar { Bar(const Bar&) { ... } // Is not noexcept, so might throw // Non movable: Bar(Bar&&) = delete;...
73 просмотров

Ошибка компиляции в списке при использовании С++ 11
Я получаю следующую ошибку при компиляции кода C++ с использованием параметра std=c++11. In file included from /usr/include/c++/7/list:63:0, from /usr/include/qt4/QtCore/qlist.h:51, from...
91 просмотров
schedule 28.11.2022

Как мне статически утверждать, что static_cast не является исключением?
У меня есть функтор для выполнения статических приведений любого типа к определенному типу, определенному таким образом: template <typename T_Out> struct cast_to { template <typename T_In> T_Out operator()(T_In&& value)...
110 просмотров
schedule 09.04.2023