Boost
C++ Libraries
...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
boost::proto::is_aggregate — A Boolean metafunction that indicates whether a type requires aggregate initialization.
// In header: <boost/proto/traits.hpp>
template<typename T>
struct is_aggregate : mpl::bool_<true-or-false> {
};
proto::is_aggregate<> is used by the
proto::make<> transform to determine how
to construct an object of some type T, given some initialization arguments
a0,...an.
If proto::is_aggregate<T>::value is true,
then an object of type T will be initialized as
T t = {a0,...an};.
Otherwise, it will be initialized as
T t(a0,...an).
Note: proto::expr<> and
proto::basic_expr<>are aggregates.