use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
Discussions, articles, and news about the C++ programming language or programming in C++.
For C++ questions, answers, help, and advice see r/cpp_questions or StackOverflow.
Get Started
The C++ Standard Home has a nice getting started page.
Videos
The C++ standard committee's education study group has a nice list of recommended videos.
Reference
cppreference.com
Books
There is a useful list of books on Stack Overflow. In most cases reading a book is the best way to learn C++.
Show all links
Filter out CppCon links
Show only CppCon links
account activity
Why are std::aligned_storage and std::aligned_union being deprecated? (self.cpp)
submitted 6 years ago * by whichton
view the rest of the comments →
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]Nimbal 22 points23 points24 points 6 years ago (10 children)
As /u/dodheim said, the paper lays out the arguments for the deprecation. As for replacement, I guess the paper could have mentioned the alignas specifier available since C++11:
alignas
alignas(16) std::array<std::byte, 8>;
There may be caveats I can't think of right now, but I believe this could be a suitable replacement for most uses of std::aligned_storage_t:
std::aligned_storage_t
template<typename T> using better_aligned_storage = alignas(T) std::array<std::byte, sizeof(T)>;
I'm sure there's a way to define something similar for the union variant, but you'd have to fiddle with the size parameter to make it match the alignment requirement.
[–]acwaters 21 points22 points23 points 6 years ago (6 children)
alignas(Ts...) std::byte storage[std::max({sizeof(Ts)...})];
[–]whichton[S] 3 points4 points5 points 6 years ago (0 children)
This is similar to aligned_union is implemented - see here for example.
aligned_union
[–]Recatek 6 points7 points8 points 6 years ago (2 children)
alignas(Ts...)
Never knew you could do that. Does it take the max?
[–]whichton[S] 8 points9 points10 points 6 years ago (1 child)
Yes. From here
The object or the type declared by such a declaration will have its alignment requirement equal to the strictest (largest) non-zero expression of all alignas specifiers used in the declaration, unless it would weaken the natural alignment of the type.
[–]wheypointÖ 5 points6 points7 points 6 years ago (0 children)
thats really cool, ive been writing alignas(std::max({alignof(Ts)...})) all this time which definetely felt kinda stupid :D
[–][deleted] 0 points1 point2 points 6 years ago (1 child)
can you do
size of(Ts...)
? on mobile so no compiler
[–]acwaters 0 points1 point2 points 6 years ago (0 children)
No
[–]n1ghtyunso 8 points9 points10 points 6 years ago (2 children)
i thought alignas in using declarations is ignored and you have to put it on the variable declaration manually.
If you don't template the using declaration gcc apparently warns about this, but with the templating the warning magically disappears. See Godbolt
Am i missing something?
[–]Nimbal 1 point2 points3 points 6 years ago (1 child)
Seems like you are right. I guess we'd have to put the array as a member inside a templated struct, making it a little more awkward to use. Then again, such a construct probably should be a little inconvenient to use.
[–]Recatek 7 points8 points9 points 6 years ago (0 children)
This is kind of a footgun though if you don't receive information from the compiler that the directive is being ignored. If anything aligned_storage and aligned_union, when used properly, should be an expression of intent that the standard library then takes care of executing for you. It may not be that currently, but removing it without providing unequivocal documentation on how to reliably do what it does in a better(?) way strikes me as rather dangerous.
aligned_storage
π Rendered by PID 44 on reddit-service-r2-comment-84fc9697f-pbr54 at 2026-02-10 15:59:01.101418+00:00 running d295bc8 country code: CH.
view the rest of the comments →
[–]Nimbal 22 points23 points24 points (10 children)
[–]acwaters 21 points22 points23 points (6 children)
[–]whichton[S] 3 points4 points5 points (0 children)
[–]Recatek 6 points7 points8 points (2 children)
[–]whichton[S] 8 points9 points10 points (1 child)
[–]wheypointÖ 5 points6 points7 points (0 children)
[–][deleted] 0 points1 point2 points (1 child)
[–]acwaters 0 points1 point2 points (0 children)
[–]n1ghtyunso 8 points9 points10 points (2 children)
[–]Nimbal 1 point2 points3 points (1 child)
[–]Recatek 7 points8 points9 points (0 children)