Size: a a a

2020 July 14

IL

Igor Lynn in supapro.cxx
Vlad Serebrennikov
в чем вопрос тогда
я думал я могу вызвать и конструктор тоже
источник

CD

Constantine Drozdov in supapro.cxx
Denis Paukaev
A trivial destructor is a destructor that performs no action.
требование лайфтаймов проистекает из требования разметки памяти для strict aliasing, тут ничего нельзя сделать
источник

CD

Constantine Drozdov in supapro.cxx
емнип в 20 стандарте накостыляли, что запись? в scalar type начинает его lifetime
источник

VS

Vlad Serebrennikov in supapro.cxx
Igor Lynn
я думал я могу вызвать и конструктор тоже
так он не существует
источник

IL

Igor Lynn in supapro.cxx
Constantine Drozdov
потому что "двойной вызов деструктора" будет
можно ткнуть носом где там двойной вызов?
источник

DP

Denis Paukaev in supapro.cxx
Igor Lynn
можно ткнуть носом где там двойной вызов?
явный и в конце лайфтайма после }
источник

IL

Igor Lynn in supapro.cxx
а тип при выходе из скоупа?
источник

VS

Vlad Serebrennikov in supapro.cxx
Igor Lynn
можно ткнуть носом где там двойной вызов?
объект создался перед точкой
после точки явно вызвался деструктор
на точке с запятой деструктор вызвался неявно
источник

IL

Igor Lynn in supapro.cxx
кек, ну да
источник

IL

Igor Lynn in supapro.cxx
невнимательный
источник

IL

Igor Lynn in supapro.cxx
Vlad Serebrennikov
так он не существует
как тогда возможна запись int(1488)?
источник

IL

Igor Lynn in supapro.cxx
int a(10);
источник

DP

Denis Paukaev in supapro.cxx
Igor Lynn
как тогда возможна запись int(1488)?
int a = int(1547);
источник

IL

Igor Lynn in supapro.cxx
Denis Paukaev
int a = int(1547);
я имею ввиду что int() это же и есть вызов конструктора, разве нет?
источник

DP

Denis Paukaev in supapro.cxx
Igor Lynn
я имею ввиду что int() это же и есть вызов конструктора, разве нет?
как стандарт на это смотрит честно не знаю, но на мой вкус да
источник

AS

Anatoly Shirokov in supapro.cxx
Igor Lynn
я имею ввиду что int() это же и есть вызов конструктора, разве нет?
с осторожностью
int a(); //
уже функция
источник

CD

Constantine Drozdov in supapro.cxx
Denis Paukaev
A trivial destructor is a destructor that performs no action.
То есть там могут начаться очень конкретные неприятности, потому что вообще-то можно вот так
#include <memory>

struct A{ int x; };
struct B{ int x; };
static_assert(sizeof(A) == sizeof(B));

void f() {
    A a;
    a.~A();
    new (&a) B{};
}
источник

IL

Igor Lynn in supapro.cxx
Anatoly Shirokov
с осторожностью
int a(); //
уже функция
ну ок int{}
источник

Е

Егор in supapro.cxx
Igor Lynn
ну ок int{}
Это аггрегатная инициализация может быть вроде
источник

IL

Igor Lynn in supapro.cxx
или initializer_list
источник