BOOST_PROTO_EXTENDS_USING_ASSIGN_NON_DEPENDENT — 用于继承自 proto::extends<> 的类中公开其中定义的重载赋值运算符。与 BOOST_PROTO_EXTENDS_USING_ASSIGN() 宏不同,BOOST_PROTO_EXTENDS_USING_ASSIGN_NON_DEPENDENT() 用于非依赖上下文。
// In header: <boost/proto/extends.hpp>
BOOST_PROTO_EXTENDS_USING_ASSIGN_NON_DEPENDENT(Derived)使用 proto::extends<> 的标准用法是定义一个继承自它的类模板。派生类模板会自动获得一个编译器生成的赋值运算符,该运算符会隐藏 proto::extends<> 中定义的运算符。在派生类中使用 BOOST_PROTO_EXTENDS_USING_ASSIGN() 可以解决这个问题。
然而,如果表达式扩展是一个普通类而不是一个类模板,那么 BOOST_PROTO_EXTENDS_USING_ASSIGN() 的用法将处于所谓的非依赖上下文中。通俗地说,这意味着在类模板中需要使用 `typename` 的某些地方使用它是非法的。在这些情况下,您应该改用 BOOST_PROTO_EXTENDS_USING_ASSIGN_NON_DEPENDENT()。
另请参阅