...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.
template<typename T> struct is_aggregate { };
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<> is an aggregate.