Size: a a a

2020 July 27

D

Danya in supapro.cxx
Так просто нельзя
источник

/

/bin/cat in supapro.cxx
когда оно убнет в таком случае?
источник

D

Danya in supapro.cxx
Когда ты попытаешься воспользоваться объектом
источник

/

/bin/cat in supapro.cxx
Я точно знаю, что функции ctor и dtor верные
источник

D

Danya in supapro.cxx
Хотя я возможно вру
источник

/

/bin/cat in supapro.cxx
class T { ... };

extern "C" {
void _ZN1TC2Ev(T *); //ctor
void _ZN1TD2Ev(T *); //dtor
}

auto ptr = (T *) new char[sizeof(T)];
ctor(ptr);

//Use

dtor(ptr);
//delete нужен???
источник

D

Dmitriy in supapro.cxx
/bin/cat
class T { ... };

extern "C" {
void _ZN1TC2Ev(T *); //ctor
void _ZN1TD2Ev(T *); //dtor
}

auto ptr = (T *) new char[sizeof(T)];
ctor(ptr);

//Use

dtor(ptr);
//delete нужен???
Аллокатор пишешь?)
источник

D

Dmitriy in supapro.cxx
Можно все. Только красивее и без сишных ужасов
источник

/

/bin/cat in supapro.cxx
нет, кодген нужен для FFI
источник

D

Dmitriy in supapro.cxx
reinterpret_cast и placement new чем не подошли?)
источник

Е

Егор in supapro.cxx
Aleksander Mironov
Ну я хочу что бы он был константным. =)
источник

Е

Егор in supapro.cxx
надо было стандарт спросить конечно заранее
источник

/

/bin/cat in supapro.cxx
placement new значит просто new T?
источник

D

Dmitriy in supapro.cxx
using byte = unsigned char;
byte* storage { new byte[sizeof(Ty)] };

Ty* obj_ptr = new (storage) Ty (std::forward<Types>(args)...);
источник

AM

Aleksander Mironov in supapro.cxx
Ничего не понятно, но очень интересно.
источник

AM

Aleksander Mironov in supapro.cxx
Я пока в шаблоны не умею.
Плавно перехожу с С на С с классами.
источник

/

/bin/cat in supapro.cxx
Нужно ли делать потом delete?
источник

Е

Егор in supapro.cxx
Aleksander Mironov
Ничего не понятно, но очень интересно.
С метапрогой не знакомы? Если грубо, то это автогенерация кода по типу
B(const char(&ar)[10]) : data{ar[0],ar[1],ar[2],ar[3], и т.д}
источник

Е

Егор in supapro.cxx
Aleksander Mironov
Я пока в шаблоны не умею.
Плавно перехожу с С на С с классами.
на С с классами легче сделать массив не константным и скопировать чем-то
источник

D

Dmitriy in supapro.cxx
/bin/cat
Нужно ли делать потом delete?
Конечно.
Только деструктор вызывать вручную:
obj_ptr->~Ty();
byte* target { reinterpret_cast<byte*>(obj_ptr) };
delete [ ] target; //Т.к. выделяли память как массив unsigned char
источник