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()
。
另请参阅