Size: a a a

2020 April 23

A

Alex in pro.cxx
сам пометит конструктор noexcept?
источник

AD

Andrey Davydov in pro.cxx
Alex
сам пометит конструктор noexcept?
да
источник

A

Alex in pro.cxx
не знал, впервые слышу о таком. Это уже в С++17 работает?
источник

AD

Andrey Davydov in pro.cxx
В C++17 — точно. Но мне кажется, так было с самого начала.
источник

m

magras in pro.cxx
Andrey Davydov
В C++17 — точно. Но мне кажется, так было с самого начала.
источник

AD

Andrey Davydov in pro.cxx
источник

m

magras in pro.cxx
Хотя я кажется, неправильно понял. Если речь про =default, то наверное, да.
источник

CD

Constantine Drozdov in pro.cxx
Александр Караев
я недавно наталкивался на баг, но никак не могу сейчас его на годболте воспроизвести
суть была в том, что компилятор отказывался генерировать noexcept = default мув-конструктор, так как там было что-то про вектор, который не мог вычислить noexcept из-за разрешения incomplete типов..

короче, я не помню. может кто-то меня поймёт и расскажет. в частности я точно помню, что там был логический парадокс, из-за которого я бомбанул
> вектор, который не мог вычислить noexcept из-за разрешения incomplete типов
фигня какая-то, у вектора безусловный noexcept на move
источник

CD

Constantine Drozdov in pro.cxx
вроде бы по моим текущим данным не noexcept move бывает только из-за const полей
источник

АК

Александр Караев in pro.cxx
Constantine Drozdov
> вектор, который не мог вычислить noexcept из-за разрешения incomplete типов
фигня какая-то, у вектора безусловный noexcept на move
говорю ж - не помню точно. сейчас играюсь на godbolt, пытаюсь воспроизвести
источник

CD

Constantine Drozdov in pro.cxx
Александр Караев
говорю ж - не помню точно. сейчас играюсь на godbolt, пытаюсь воспроизвести
может, все-таки const поля?
источник

АК

Александр Караев in pro.cxx
Constantine Drozdov
может, все-таки const поля?
не, такое я не пихаю в структуры.
начинаю вспоминать, что там была структура с кучкой полей без конструкторов/деструкторов, но одно из полей - vector
источник

DS

David Sorokin in pro.cxx
noexcept для default разве не вычисляется компилятором? То есть, может сделать noexcept, будет noexcept. Иначе - нет. Например, если у поля класса конструктор не noexcept, то и итоговый конструктор самого класса тоже будет не noexcept?
источник

АК

Александр Караев in pro.cxx
Constantine Drozdov
может, все-таки const поля?
начнём с этого:

struct A {
   std::vector<int> ok;
   //std::tuple<std::vector<int>> bad;

   A() noexcept = default;
};

ok - ок, bad приводит к exception specification of explicitly defaulted default constructor does not match the calculated one
источник

CD

Constantine Drozdov in pro.cxx
Александр Караев
начнём с этого:

struct A {
   std::vector<int> ok;
   //std::tuple<std::vector<int>> bad;

   A() noexcept = default;
};

ok - ок, bad приводит к exception specification of explicitly defaulted default constructor does not match the calculated one
Выглядит как какая-то ошибка в tuple
источник

АК

Александр Караев in pro.cxx
Constantine Drozdov
Выглядит как какая-то ошибка в tuple
да, крайне подозрительно
источник

АК

Александр Караев in pro.cxx
struct A {
   A() noexcept = default;
};

struct C {
   std::tuple<A> bad1;
   std::pair<A, A> bad2;

   C() noexcept = default;
};


и так ломается..
источник

v

vehlwn in pro.cxx
Александр Караев
struct A {
   A() noexcept = default;
};

struct C {
   std::tuple<A> bad1;
   std::pair<A, A> bad2;

   C() noexcept = default;
};


и так ломается..
У пары ни один к-тор не помечен noexcept.
источник

AD

Andrey Davydov in pro.cxx
В 2013-м уважаемые люди поговорили-поговорили на эту тему (https://groups.google.com/a/isocpp.org/forum/#!topic/std-proposals/Y4doUWmZ1pc) и разошлись. Видимо бумажку так никто и не написал.
источник

АК

Александр Караев in pro.cxx
Andrey Davydov
В 2013-м уважаемые люди поговорили-поговорили на эту тему (https://groups.google.com/a/isocpp.org/forum/#!topic/std-proposals/Y4doUWmZ1pc) и разошлись. Видимо бумажку так никто и не написал.
Ну ооочень странно. То есть умные люди продумали тыщу нюансов с explicit/constexpr/trivial в зависимости от типов аргументов, но на noexcept забили
источник