Page Summary
archaicos.livejournal.com - (no subject)
spamsink - (no subject)
dvv.livejournal.com - (no subject)
spamsink - (no subject)
dvv.livejournal.com - (no subject)
spamsink - (no subject)
solomon2.livejournal.com - (no subject)
spamsink - (no subject)
spamsink - (no subject)
fatoff.livejournal.com - (no subject)
spamsink - (no subject)
sab123.livejournal.com - (no subject)
spamsink - (no subject)
lider.livejournal.com - (no subject)
spamsink - (no subject)
lider.livejournal.com - (no subject)
spamsink - (no subject)
lider.livejournal.com - bool compilable = true;
spamsink - Re: bool compilable = true;
lider.livejournal.com - (no subject)
spamsink - (no subject)
lider.livejournal.com - (no subject)
spamsink - (no subject)
lider.livejournal.com - (no subject)
spamsink - (no subject)
Active Entries
Style Credit
- Style: Early Edition for Five AM by
Expand Cut Tags
No cut tags
no subject
Date: 2012-09-26 01:11 am (UTC)no subject
Date: 2012-09-26 01:21 am (UTC)http://en.cppreference.com/w/cpp/algorithm/max
no subject
Date: 2012-09-26 01:31 am (UTC)no subject
Date: 2012-09-26 01:38 am (UTC)Приходится делать собственные магические юнионы.
no subject
Date: 2012-09-26 01:47 am (UTC)no subject
Date: 2012-09-26 02:38 am (UTC)no subject
Date: 2012-09-26 02:44 am (UTC)no subject
Date: 2012-09-26 02:51 am (UTC)no subject
Date: 2012-09-26 03:07 am (UTC)no subject
Date: 2012-09-26 03:59 am (UTC)no subject
Date: 2012-09-26 04:02 am (UTC)no subject
Date: 2012-09-26 02:33 pm (UTC)no subject
Date: 2012-09-26 03:42 pm (UTC)no subject
Date: 2012-09-26 05:29 pm (UTC)struct B { long b; };
union AB{ struct A a; struct B b;};
struct C { char data[sizeof(AB)]; };
no subject
Date: 2012-09-26 05:37 pm (UTC)no subject
Date: 2012-09-26 05:44 pm (UTC)public: A(int zero){ a = zero; }
int a; };
struct B {
protected:
B(long int zero = 0L){ b = zero;}
long b; };
union AB{ struct A a; struct B b;};
struct C { char data[sizeof(AB)]; };
no subject
Date: 2012-09-26 05:57 pm (UTC)bool compilable = true;
Date: 2012-09-26 06:02 pm (UTC)На моем компилится так как я записал,
на старом будет так:
struct A {public: A(int zero){ a = zero; } int a; };
struct B {protected: B(long int zero = 0L){ b = zero;} long b; };
struct dA { char data[sizeof(A)];};
struct dB { char data[sizeof(B)];};
union AB{ struct dA a; struct dB b;};
struct C { char data[sizeof(AB)]; };
Re: bool compilable = true;
Date: 2012-09-26 06:28 pm (UTC)union.cc:15: error: member ‘A AB::a’ with constructor not allowed in union
union.cc:15: error: member ‘B AB::b’ with constructor not allowed in union
(GСС 4.4, если что)
А отредактированный длинее, чем char data[sizeof(A) > sizeof(B) ? sizeof(A) : sizeof(B)];
Я ж не прошу помочь мне написать то, что я хочу, я на С++ жалуюсь.
no subject
Date: 2012-09-26 06:55 pm (UTC)Колоссально!
no subject
Date: 2012-09-26 07:38 pm (UTC)Так что за компилятор позволяет юнионы с не-POD классами?Ах, C++11... Им пока только дома развлекаться, на работе он не допущен к применению.
no subject
Date: 2012-09-27 06:49 pm (UTC)Apple clang version 4.0 (tags/Apple/clang-421.0.60) (based on LLVM 3.1svn)
так что там у кого длиннее? Для интереса полез на онлайн-компилятор - везде одинаковая длина.
Код в студию!
no subject
Date: 2012-09-27 07:04 pm (UTC)no subject
Date: 2012-09-27 07:23 pm (UTC)http://codepad.org/Knn5Detq
no subject
Date: 2012-09-27 07:37 pm (UTC)Я о том, что даже в C++11 у std::max нет constexpr-варианта, хотя казалось бы.
И о том, что в любом конкретном случае при письме на C++03, где нельзя вставлять настоящие классы в union и приходится прибегать к двухшаговой записи, явно записанное условное выражение будет текстуально короче, чем эта двухшаговая запись, поэтому нет смысла мучиться.
Но спасибо за указание на unrestricted unions. Список нововведений я когда-то читал, а без практики, естественно, о многом успел позабыть.