Вопросы по теме 'noexcept'
Как мне написать конечный возвращаемый тип с поддержкой ADL или спецификацию noexcept?
Представьте, что я пишу какой-то шаблон контейнера или что-то в этом роде. И пришло время специализироваться std::swap на этом. Как порядочный гражданин, я включу ADL, сделав что-то вроде этого:
template <typename T>
void...
1274 просмотров
schedule
24.09.2021
Чем полезен 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 просмотров
schedule
11.04.2022
Как использовать 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 просмотров
schedule
21.08.2022
Почему по умолчанию принимается конструктор перемещения 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 просмотров
schedule
30.08.2022
Использование нового размещения на 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 просмотров
schedule
24.02.2023
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 просмотров
schedule
05.12.2022
Почему компиляторы не могут обнаружить несоответствие использования «noexcept»?
Ниже приведен код, в котором компиляторы частично обнаруживают несоответствие между объявлением метода (т.е. со спецификатором noexcept) и реализацией метода.
Компиляторы выдают предупреждение для метода "bazExcept()", но ничего не сообщают для...
113 просмотров
schedule
14.03.2023