Size: a a a

2020 April 29

R

Ruben in pro.cxx
а, понял
источник

R

Ruben in pro.cxx
this это сам функтор
источник

ПК

Побитый Кирпич in pro.cxx
Ruben
То есть реально сегфолт как будто в операторе присваивания
Просрал this, инфа сотка
источник

R

Ruben in pro.cxx
а?
источник

R

Ruben in pro.cxx
ну уже выяснили, что объект не создавался
источник

R

Ruben in pro.cxx
и rtcp_asink был nullptr
источник

q

qwert in pro.cxx
Расскажите пожалуйста, в чем принципиальное отличие
std::aligned_storage<16,16>

от
std::aligned_storage<16,4>

?
источник

ПК

Побитый Кирпич in pro.cxx
qwert
Расскажите пожалуйста, в чем принципиальное отличие
std::aligned_storage<16,16>

от
std::aligned_storage<16,4>

?
Это два разных типа
источник

q

qwert in pro.cxx
Provides the nested type type, which is a trivial standard-layout type suitable for use as uninitialized storage for any object whose size is at most Len and whose alignment requirement is a divisor of Align.

в первый я могу положить что угодно, у чего alignof == 1,2,4,8,16
а во второй только alignof == 1,2,4 ?
источник

v

vehlwn in pro.cxx
qwert
Provides the nested type type, which is a trivial standard-layout type suitable for use as uninitialized storage for any object whose size is at most Len and whose alignment requirement is a divisor of Align.

в первый я могу положить что угодно, у чего alignof == 1,2,4,8,16
а во второй только alignof == 1,2,4 ?
Да.
источник

q

qwert in pro.cxx
у меня сейчас объект
struct Int3 { int data[3]; };
 ложится в  любой
std::aligned_storage<16,X>::type
(1 2 4 8 или 16), не пойму этого
источник

q

qwert in pro.cxx
using Align1616 = std::aligned_storage<16,1>::type;
Int3 object;
Align1616 alignedObj;
new (&alignedObj) Int3{object};
источник

NP

Nikita Provotorov in pro.cxx
qwert
using Align1616 = std::aligned_storage<16,1>::type;
Int3 object;
Align1616 alignedObj;
new (&alignedObj) Int3{object};
На том же cppref написано, что если вы явно задаёте 2ой параметр шаблона, то это должен быть alignof(T), иначе UB
источник

q

qwert in pro.cxx
🤯 то есть его нельзя использовать для набора типов с разным alignof?
источник

NP

Nikita Provotorov in pro.cxx
qwert
🤯 то есть его нельзя использовать для набора типов с разным alignof?
кажется, просто не стоит трогать второй параметр в этом случае
источник

NP

Nikita Provotorov in pro.cxx
Nikita Provotorov
кажется, просто не стоит трогать второй параметр в этом случае
The default value of Align is the most stringent (the largest) alignment requirement for any object whose size is at most Len
источник

q

qwert in pro.cxx
Nikita Provotorov
На том же cppref написано, что если вы явно задаёте 2ой параметр шаблона, то это должен быть alignof(T), иначе UB
какое то противоречие между 2 и 1 абзацем
в первом говорится что должен быть делителем, во втором, что должен совпадать
источник

v

vehlwn in pro.cxx
qwert
какое то противоречие между 2 и 1 абзацем
в первом говорится что должен быть делителем, во втором, что должен совпадать
Align делитель Align. Нет противоречия.
источник

q

qwert in pro.cxx
for any object whose alignment requirement is a divisor of Align.
Align must be the value of alignof(T) for some type T
источник

NP

Nikita Provotorov in pro.cxx
qwert
какое то противоречие между 2 и 1 абзацем
в первом говорится что должен быть делителем, во втором, что должен совпадать
Вообще по логике вещей для кейса с набором типов T1, …, TN должен прокатывать вариант с НОК(alignof(T1), …, alignof(TN))
Но явно об этом ничего не написано
источник