...one of the most highly
regarded and expertly designed C++ library projects in the
world. — Herb Sutter and Andrei
BOOST_PROTO_EXTENDS_USING_ASSIGN_NON_DEPENDENT — For exposing in classes that inherit from
the overloaded assignment operators defined therein. Unlike the
BOOST_PROTO_EXTENDS_USING_ASSIGN_NON_DEPENDENT() is for use in non-dependent
// In header: <boost/proto/extends.hpp> BOOST_PROTO_EXTENDS_USING_ASSIGN_NON_DEPENDENT(Derived)
The standard usage of
is to define a class template that inherits from it. The derived class template automatically gets a
compiler-generated assignment operator that hides the ones defined in
BOOST_PROTO_EXTENDS_USING_ASSIGN() in the derived class solves this problem.
However, if the expression extension is an ordinary class and not a class template, the usage of
BOOST_PROTO_EXTENDS_USING_ASSIGN() is in a so-called non-dependent context. In plain English,
it means it is illegal to use
typename in some places where it is required in a class template.
In those cases, you should use