On 04/04/2015 07:55 PM, Eric Niebler wrote:
On 4/4/2015 4:42 PM, Larry Evans wrote:
On 04/04/2015 06:25 PM, Steven Watanabe wrote:
AMDG
On 04/04/2015 05:20 PM, Larry Evans wrote:
On 04/04/2015 06:18 PM, Steven Watanabe wrote:
The reason that aligned storage doesn't work has nothing to do with calculating the alignment.
Why does using aligned_storage not work, please?
On 04/04/2015 04:06 PM, Matt Calabrese wrote:
You need to use a recursive union if you are to get some constexpr support.
OK. So Matt, could you please elaborate on why constexpr support requires a recursive union?
To put an object into aligned storage requires placement new, which is not constexpr. Using a recursive union avoids the need for placement new.
Thanks Eric. I see the restriction about new expression here: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3652.html I can see how a new expression which is not a placement new would be disallowed; however, I don't see a reason why placement new would be disallowed when the void* 2nd argument is a pointer to a constexpr aligned_union member variable. Could you please provide a reference or explanation of why placement new is not allowed in a constexpr? -regards, Larry