Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从boost 1.38升级到1.39会导致对boost::algorithm::split的调用无法编译_C++_Boost - Fatal编程技术网

C++ 从boost 1.38升级到1.39会导致对boost::algorithm::split的调用无法编译

C++ 从boost 1.38升级到1.39会导致对boost::algorithm::split的调用无法编译,c++,boost,C++,Boost,我使用的是Boost 1.38,我刚刚升级到1.39。升级中断了以下代码位: std::vector<std::wstring> consoleParser::loadStringsFromFile(const std::wstring &fileName) { std::vector<std::wstring> files; std::wstring fileString(loadFileAsString(fileName)); boos

我使用的是Boost 1.38,我刚刚升级到1.39。升级中断了以下代码位:

std::vector<std::wstring> consoleParser::loadStringsFromFile(const std::wstring &fileName)
{
    std::vector<std::wstring> files;
    std::wstring fileString(loadFileAsString(fileName));
    boost::algorithm::split(files, fileString, boost::is_any_of(L"\r\n'\"")); //Error on this line
    return files;
}
std::vector控制台解析器::loadStringsFromFile(const std::wstring&fileName)
{
std::矢量文件;
std::wstring fileString(loadFileAsString(fileName));
boost::algorithm::split(files,fileString,boost::是(L“\r\n'\”)中的任意一个);//此行出错
归还文件;
}
关于导致失败的原因有什么想法吗?我的编译器提供了以下有用信息:

c:\boost\boost\utility\addressof.hpp(30) : error C2220: warning treated as error - no 'object' file generated
        c:\boost\boost\utility\addressof.hpp(56) : see reference to class template instantiation 'boost::detail::addr_impl_ref<T>' being compiled
        with
        [
            T=boost::algorithm::detail::token_finderF<boost::algorithm::detail::is_any_ofF<wchar_t>>
        ]
        c:\boost\boost\function\function_template.hpp(600) : see reference to function template instantiation 'T *boost::addressof<FunctionObj>(T &)' being compiled
        with
        [
            T=boost::algorithm::detail::token_finderF<boost::algorithm::detail::is_any_ofF<wchar_t>>,
            FunctionObj=boost::algorithm::detail::token_finderF<boost::algorithm::detail::is_any_ofF<wchar_t>>
        ]
        c:\boost\boost\function\function_template.hpp(491) : see reference to function template instantiation 'bool boost::detail::function::basic_vtable2<R,T0,T1>::assign_to<F>(FunctionObj,boost::detail::function::function_buffer &,boost::detail::function::function_obj_tag)' being compiled
        with
        [
            R=boost::iterator_range<std::_String_iterator<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t>>>,
            T0=std::_String_iterator<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t>>,
            T1=std::_String_iterator<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t>>,
            F=boost::algorithm::detail::token_finderF<boost::algorithm::detail::is_any_ofF<wchar_t>>,
            FunctionObj=boost::algorithm::detail::token_finderF<boost::algorithm::detail::is_any_ofF<wchar_t>>
        ]
        c:\boost\boost\function\function_template.hpp(906) : see reference to function template instantiation 'bool boost::detail::function::basic_vtable2<R,T0,T1>::assign_to<Functor>(F,boost::detail::function::function_buffer &)' being compiled
        with
        [
            R=boost::iterator_range<std::_String_iterator<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t>>>,
            T0=std::_String_iterator<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t>>,
            T1=std::_String_iterator<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t>>,
            Functor=boost::algorithm::detail::token_finderF<boost::algorithm::detail::is_any_ofF<wchar_t>>,
            F=boost::algorithm::detail::token_finderF<boost::algorithm::detail::is_any_ofF<wchar_t>>
        ]
        c:\boost\boost\function\function_template.hpp(720) : see reference to function template instantiation 'void boost::function2<R,T0,T1>::assign_to<Functor>(Functor)' being compiled
        with
        [
            R=boost::iterator_range<std::_String_iterator<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t>>>,
            T0=std::_String_iterator<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t>>,
            T1=std::_String_iterator<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t>>,
            Functor=boost::algorithm::detail::token_finderF<boost::algorithm::detail::is_any_ofF<wchar_t>>
        ]
        c:\boost\boost\algorithm\string\detail\find_iterator.hpp(51) : see reference to function template instantiation 'boost::function2<R,T0,T1>::function2<FinderT>(Functor,int)' being compiled
        with
        [
            R=boost::iterator_range<std::_String_iterator<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t>>>,
            T0=std::_String_iterator<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t>>,
            T1=std::_String_iterator<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t>>,
            FinderT=boost::algorithm::detail::token_finderF<boost::algorithm::detail::is_any_ofF<wchar_t>>,
            Functor=boost::algorithm::detail::token_finderF<boost::algorithm::detail::is_any_ofF<wchar_t>>
        ]
        c:\boost\boost\algorithm\string\find_iterator.hpp(261) : see reference to function template instantiation 'boost::algorithm::detail::find_iterator_base<IteratorT>::find_iterator_base<FinderT>(FinderT,int)' being compiled
        with
        [
            IteratorT=input_iterator_type,
            FinderT=boost::algorithm::detail::token_finderF<boost::algorithm::detail::is_any_ofF<wchar_t>>
        ]
        c:\boost\boost\algorithm\string\iter_find.hpp(167) : see reference to function template instantiation 'boost::algorithm::split_iterator<IteratorT>::split_iterator<FinderT>(IteratorT,IteratorT,FinderT)' being compiled
        with
        [
            IteratorT=input_iterator_type,
            FinderT=boost::algorithm::detail::token_finderF<boost::algorithm::detail::is_any_ofF<wchar_t>>
        ]
        c:\boost\boost\algorithm\string\split.hpp(149) : see reference to function template instantiation 'SequenceSequenceT &boost::algorithm::iter_split<SequenceSequenceT,RangeT,boost::algorithm::detail::token_finderF<PredicateT>>(SequenceSequenceT &,RangeT &,FinderT)' being compiled
        with
        [
            SequenceSequenceT=std::vector<std::wstring>,
            RangeT=std::wstring,
            PredicateT=boost::algorithm::detail::is_any_ofF<wchar_t>,
            FinderT=boost::algorithm::detail::token_finderF<boost::algorithm::detail::is_any_ofF<wchar_t>>
        ]
        c:\documents and settings\user\my documents\visual studio 2008\projects\pevfind\pevfind\consoleparser.cpp(1529) : see reference to function template instantiation 'SequenceSequenceT &boost::algorithm::split<std::vector<_Ty>,std::wstring,boost::algorithm::detail::is_any_ofF<CharT>>(SequenceSequenceT &,RangeT &,PredicateT,boost::algorithm::token_compress_mode_type)' being compiled
        with
        [
            SequenceSequenceT=std::vector<std::wstring>,
            _Ty=std::wstring,
            CharT=wchar_t,
            RangeT=std::wstring,
            PredicateT=boost::algorithm::detail::is_any_ofF<wchar_t>
        ]
c:\boost\boost\utility\addressof.hpp(30) : warning C4512: 'boost::detail::addr_impl_ref<T>' : assignment operator could not be generated
        with
        [
            T=boost::algorithm::detail::token_finderF<boost::algorithm::detail::is_any_ofF<wchar_t>>
        ]
c:\boost\boost\utility\addressof.hpp(30):错误C2220:警告被视为错误-未生成“对象”文件
c:\boost\boost\utility\addressof.hpp(56):请参阅对正在编译的类模板实例化'boost::detail::addr\u impl\u ref'的引用
具有
[
T=boost::algorithm::detail::token\u finderF
]
c:\boost\boost\function\function\u template.hpp(600):请参阅正在编译的函数模板实例化“T*boost::addressof(T&)”的参考
具有
[
T=boost::algorithm::detail::token\u finderF,
FunctionObj=boost::algorithm::detail::token\u finderF
]
c:\boost\boost\function\function\u template.hpp(491):请参阅正在编译的函数模板实例化“bool boost::detail::function::basic_vtable2::assign_to(FunctionObj,boost::detail::function::function_buffer&,boost::detail::function::function_obj_标记)”
具有
[
R=boost::迭代器_范围,
T0=std::\u字符串\u迭代器,
T1=std::_字符串_迭代器,
F=boost::algorithm::detail::token\u finderF,
FunctionObj=boost::algorithm::detail::token\u finderF
]
c:\boost\boost\function\function\u template.hpp(906):请参阅正在编译的函数模板实例化“bool boost::detail::function::basic_vtable2::assign_to(F,boost::detail::function::function\u buffer&)”
具有
[
R=boost::迭代器_范围,
T0=std::\u字符串\u迭代器,
T1=std::_字符串_迭代器,
Functor=boost::algorithm::detail::token\u finderF,
F=boost::algorithm::detail::token\u finderF
]
c:\boost\boost\function\function\u template.hpp(720):请参阅正在编译的函数模板实例化“void boost::function2::assign\u to(Functor)”的参考
具有
[
R=boost::迭代器_范围,
T0=std::\u字符串\u迭代器,
T1=std::_字符串_迭代器,
Functor=boost::algorithm::detail::token\u finderF
]
c:\boost\boost\algorithm\string\detail\find_iterator.hpp(51):请参阅正在编译的函数模板实例化“boost::function2::function2(Functor,int)”的参考
具有
[
R=boost::迭代器_范围,
T0=std::\u字符串\u迭代器,
T1=std::_字符串_迭代器,
FinderT=boost::algorithm::detail::token\u finderF,
Functor=boost::algorithm::detail::token\u finderF
]
c:\boost\boost\algorithm\string\find_iterator.hpp(261):请参阅正在编译的函数模板实例化“boost::algorithm::detail::find_iterator_base::find_iterator_base(FinderT,int)”的参考
具有
[
iterator=输入\迭代器\类型,
FinderT=boost::algorithm::detail::token\u finderF
]
c:\boost\boost\algorithm\string\iter\u find.hpp(167):请参阅正在编译的函数模板实例化“boost::algorithm::split\u iterator::split\u iterator(iterator,iterator,FinderT)”
具有
[
iterator=输入\迭代器\类型,
FinderT=boost::algorithm::detail::token\u finderF
]
c:\boost\boost\algorithm\string\split.hpp(149):请参阅正在编译的函数模板实例化“SequenceSequenceT&boost::algorithm::iter_split(SequenceSequenceT&,RangeT&,FinderT)”
具有
[
SequenceT=std::vector,
RangeT=标准::wstring,
PredicateT=boost::algorithm::detail::是否关闭了,
FinderT=boost::algorithm::detail::token\u finderF
]
c:\documents and settings\user\my documents\visual studio 2008\projects\pevfind\pevfind\consoleparser.cpp(1529):请参阅正在编译的函数模板实例化“SequenceSequenceT&boost::algorithm::split(SequenceSequenceT&,RangeT&,谓词集,boost::algorithm::token\u compress\u mode\u type)”的参考
具有
[
SequenceT=std::vector,
_Ty=std::wstring,
CharT=wchar\t,
RangeT=标准::wstring,
PredicateT=boost::algorithm::detail::是否关闭了
]
c:\boost\boost\utility\addressof.hpp(30):警告C4512:'boost::detail::addr\u impl\u ref':无法生成赋值运算符
具有
[
T=boost::algorithm::detail::token\u finderF
]

如果我切换到警告级别4并设置“将警告视为错误”,则地雷也会中断。
尝试更改这些设置。

如果我切换到警告级别4并设置“将警告视为错误”,我也会中断。
尝试更改这些设置。

编译失败,因为发出了新的警告(
boost::detail::addr\u impl\u ref):无法生成赋值运算符,并且您的设置被设置为将警告视为错误。从和判断,boost 1.39.0和VS2008确实存在问题

后一个链接提供了修复该问题的补丁。它应该在Boost 1.40.0中修复


另一种方法是暂时禁用“将警告视为错误”标志。

您的编译失败,因为发出了新的警告(
boost::detail::addr\u impl\u ref]:无法生成赋值运算符。
),并且您的设置设置为将警告视为错误。从和判断,这确实是Boost 1.39.0和VS2008的问题

后一个链接提供
#pragma warning (disable:4512)