gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-27 23:35:14 24 4
gpt4 key购买 nike

我使用的是 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;
}

关于导致失败的原因有什么想法吗?我的编译器有用地发出以下内容:

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>>
]

最佳答案

您的编译失败,因为发出了一个新的警告 ( boost::detail::addr_impl_ref<T>' : assignment operator could not be generated ),并且您的设置被设置为将警告视为错误。从this来看和 this ,这确实是 Boost 1.39.0 和 VS2008 的问题。

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

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

关于c++ - 从 boost 1.38 升级到 1.39 导致我对 boost::algorithm::split 的调用无法编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/901700/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com