Size: a a a

2020 August 22

CD

Constantine Drozdov in supapro.cxx
Aidar Fattakhov
посылать = static_assert(иди суй uniq_ptr)
так никаких проблем у того же variant нет
источник

AF

Aidar Fattakhov in supapro.cxx
а что такое MoveAssignable?
источник

AF

Aidar Fattakhov in supapro.cxx
но не constructable
источник

EV

Eduard Voronkin in supapro.cxx
Егор
в обоих ветках должны быть валидные выражения

А не, работает, я совсем запутався, это как депенденд фалсе?
Для простого ифа - да. А вот для констекспр - нет. Компилятор просто удалит невалидный код из нужной(ненужной) ветки ифа, он же constexpr
источник

AF

Aidar Fattakhov in supapro.cxx
или у меня порядок не в ту сторону?
источник

CD

Constantine Drozdov in supapro.cxx
Aidar Fattakhov
а что такое MoveAssignable?
надо вспоминать, навскидку - представь аллокатор без propagate
источник

CD

Constantine Drozdov in supapro.cxx
constructible требует уметь создавать новый объект по образцу
источник

CD

Constantine Drozdov in supapro.cxx
пусть даже в раздолбанном состоянии, но чтобы над ним сработали operator = и (внутренний) swap
источник

Е

Егор in supapro.cxx
Eduard Voronkin
Для простого ифа - да. А вот для констекспр - нет. Компилятор просто удалит невалидный код из нужной(ненужной) ветки ифа, он же constexpr
источник

CD

Constantine Drozdov in supapro.cxx
Aidar Fattakhov
или у меня порядок не в ту сторону?
в ту, move ctor требует создать еще один объект и допускает разрушение прошлого, move assign - нет
источник

CD

Constantine Drozdov in supapro.cxx
вообще надо уже библиотеку долбанутых примеров сделать
источник

EV

Eduard Voronkin in supapro.cxx
А че там? Мой инет не вытягивает
источник

Е

Егор in supapro.cxx
Eduard Voronkin
А че там? Мой инет не вытягивает
struct foo {
   int a;
   int bar() {
       if constexpr (false)
           return *a;   // ошибка
       else
           return a;
   }
};
источник

EV

Eduard Voronkin in supapro.cxx
Видимо, не всегда :) ну я только с трейтами и шаблонами тестил, с ними всё как надо 👍🏾
источник

CD

Constantine Drozdov in supapro.cxx
Aidar Fattakhov
или у меня порядок не в ту сторону?
как минимум, свидетель: DestructiveMoveConstructible + MoveAssignable означает возможность поместить в вектор (релоцируемость), и тебе надо что-то из этого обязательно удалять для нерелоцируемого объекта
почему означает - надо перечитать внимательно семантики операций
источник

EV

Eduard Voronkin in supapro.cxx
Егор
struct foo {
   int a;
   int bar() {
       if constexpr (false)
           return *a;   // ошибка
       else
           return a;
   }
};
Хотя вообще странно. Выглядит как валидный код О___о
источник

CD

Constantine Drozdov in supapro.cxx
Aidar Fattakhov
или у меня порядок не в ту сторону?
увы, passkey в деструктор запихать не получится :(
источник

CD

Constantine Drozdov in supapro.cxx
давно мечтаю о параметрах деструктора
источник

EV

Eduard Voronkin in supapro.cxx
Constantine Drozdov
давно мечтаю о параметрах деструктора
А как их передавать туда?
источник

CD

Constantine Drozdov in supapro.cxx
Eduard Voronkin
А как их передавать туда?
Да как угодно
источник