Say I have
#include <boost/multi_array.hpp>
using intArray3D = boost::multi_array<int, 3>;
and I want to create a bunch of intArray3Ds with the same shape:
auto my_shape = boost::extents[3][4][5];
intArray3D xs(my_shape), ys(my_shape), zs(my_shape);
It's easy enough to use auto to assign boost::extents[3][4][5] into a variable, but how can I concretely figure out the underlying type?

The documentation mentions:
where
gen_typeis a member ofboost::multi_array_types::extent_gen(andboost::multi_array_types::extent_genis also the type of the global helper objectboost::extents).You can also see that constructors which accept a set of extents are specified in this way (at least for purposes of public documentation). For example,
...
...
So you could rewrite that line of your code without using
autoas:This is a bit silly for a local variable, but maybe you want to store a set of extents in a class or something like that. If so, this is the way to do it according to the officially documented interface.
(As noted in comments, the actual type this typedef resolves to involves
boost::internal::, but you should never use anything from an "internal" namespace in your code, because that is subject to change in future versions.)