
Robert Ramey wrote:
Robert Ramey wrote:
This exchange illustrates the problem rather nicely. Its not clear to me from the name "aligned_storage" that its meant to do the same job as "stack_allocate" and in fact is easily confused with other boost functions. I've been able to find no documentation nor test nor other information. The only place its used is in variant.hpp but its not mentioned in the documentation of that either. There is no statement in the header itself as to what it does and the code is sufficiently non-trivial that it's not obvious what its supposed to do. The fact that it has a parameter than stack_allocate doesn't need also suggests that it's intended purpose is different from that of stack_allocate.
The previous post referred to alignment_of rather than aligned_storage which seems to me to unrelated. Are they related in some non-obvious (to me) way?
They are realted. A typical usage of 'aligned_storage' for storing a single T would be aligned_storage< sizeof(T), alignment_of<T>::value > which is basically equivalent to what your 'stack_allocate' is aiming for. It would be useful to have a higher-level wrapper template for this particular use case, so, assuming that 'stack_allocate' is going to be fixed to use 'algined_storage' in its implementation, you are more than welcome to promote it into a public compoment (with a better name, I hope).
What's incorrect about my statement above?
You are totally right to raise the documentation issue. You were wrong to assume that 'algined_storage' is intended to serve a different purspose.
It doesn't, see aligned_storage's "Rationale" subsection in http://tinyurl.com/39asx.
Is this part of boost documentation and tests?
No, and it should be. Eric, John? -- Aleksey Gurtovoy MetaCommunications Engineering