在Microsoft Visual Studio 2017和2019中使用Boost 1.69.0从x3 :: variant继承时,我有一个烦人的警告:
warning C4521: 'boost::spirit::x3::variant<int>': multiple copy constructors specified
note: see reference to class template instantiation 'boost::spirit::x3::variant<int>' being compiled
这是由以下代码触发的:
#include "boost/spirit/home/x3/support/ast/variant.hpp"
struct si : boost::spirit::x3::variant<int> {};
int main() { si s; }
我该怎么做才能消除此警告?
答案 0 :(得分:0)
我该怎么做才能消除此警告?
-isystem-includes
而不是-I
)答案 1 :(得分:0)
如果您必须坚持1.69.0并想在代码中对其进行修复,则可以删除spirit \ home \ x3 \ support \ ast \ variant.hpp中的第152-153行
variant(variant& rhs) BOOST_NOEXCEPT_IF((std::is_nothrow_constructible<variant_type, variant_type&>::value))
: var(rhs.var) {}
(因为在第149-150行中定义了另一个带有const参数的副本构造函数)。