Size: a a a

2020 March 26

VO

Vyacheslav Olkhovchenkov in pro.cxx
какая разница, на член или на функцию-член? как будто класс можно по-кускам описывть
источник

CD

Constantine Drozdov in pro.cxx
Vyacheslav Olkhovchenkov
какая разница, на член или на функцию-член? как будто класс можно по-кускам описывть
большая, они очень разные по структуре
источник

VO

Vyacheslav Olkhovchenkov in pro.cxx
они оба описываются внутри класса, а начав описывать класс ты не можешь что-то оставить на потом
источник

VO

Vyacheslav Olkhovchenkov in pro.cxx
я про синтаксический аспект
источник

CD

Constantine Drozdov in pro.cxx
struct A {
   int x;
   void foo();
};

static_assert(sizeof(&A::x) == sizeof(void*));
static_assert(sizeof(&A::foo) == 2*sizeof(void*));
источник

CD

Constantine Drozdov in pro.cxx
Vyacheslav Olkhovchenkov
они оба описываются внутри класса, а начав описывать класс ты не можешь что-то оставить на потом
так вопрос в доступе/вызове, а не инициализации
источник

VO

Vyacheslav Olkhovchenkov in pro.cxx
struct A у тебя тут полный
источник

VO

Vyacheslav Olkhovchenkov in pro.cxx
а вот напиши просто strcut A; и дальше я думаю у тебя ничего не сработает
источник

MD

Mikhail Demchenko in pro.cxx
Коллеги, так подскажите по моему кейсу? Код то компилится, но не вызывает ли он UB?
источник

CD

Constantine Drozdov in pro.cxx
Mikhail Demchenko
Коллеги, так подскажите по моему кейсу? Код то компилится, но не вызывает ли он UB?
так в нем нет никакого incomplete type
источник

ПК

Побитый Кирпич in pro.cxx
Mikhail Demchenko
Коллеги, так подскажите по моему кейсу? Код то компилится, но не вызывает ли он UB?
У тебя в любом случае функции члены шаблонного класса скомпилируются в foo только (при использовании), а там типа все типы полные
источник

MD

Mikhail Demchenko in pro.cxx
Constantine Drozdov
так в нем нет никакого incomplete type
Тогда вот так: https://godbolt.org/z/RsLvLw тип control_block остаётся incomplete
источник

CD

Constantine Drozdov in pro.cxx
Вот если заставить инстанцировать метод до тела control_block, очень сильно подозреваю IFNDR
источник

ПК

Побитый Кирпич in pro.cxx
Mikhail Demchenko
Тогда вот так: https://godbolt.org/z/RsLvLw тип control_block остаётся incomplete
То же самое
источник

ПК

Побитый Кирпич in pro.cxx
Шаблон не компилируется полноценно пока не будет заюзан
источник

ПК

Побитый Кирпич in pro.cxx
Там можно разную дичь писать в методах
источник

CD

Constantine Drozdov in pro.cxx
struct A;
void f(A* a, void (A::*f)()) {
   (a->*f)(); //OK o_O
}
источник

MD

Mikhail Demchenko in pro.cxx
Побитый Кирпич
То же самое
Позвольте, control_block  всё же incomplete в контексте foo
источник

MD

Mikhail Demchenko in pro.cxx
Constantine Drozdov
struct A;
void f(A* a, void (A::*f)()) {
   (a->*f)(); //OK o_O
}
ну вот как бы да, это и смутило
источник

ПК

Побитый Кирпич in pro.cxx
Mikhail Demchenko
Позвольте, control_block  всё же incomplete в контексте foo
Да, не заметил
источник