|
Boost : |
Subject: [boost] [Program Options] fix for #6797 breaks compilation
From: Jürgen Hunold (jhunold_at_[hidden])
Date: 2014-01-07 10:48:55
Hi Volodya,
the fix for #6797 in 4ae33ce15e5b6345e6eefa19466fdf7cd28a7bbd breaks compilation
if Boost.ProgramOptions on msvc-11.0 and -12.0. See full error log with msvc-11.0
attached.
It seems that the export macros changes the template evaluation somehow, so msvc
now needs "decrement" and "advance" member. The short error is:
E:\dev\devel\boost\boost/iterator/iterator_facade.hpp(402) :
error C2039: 'decrement' : is not a member of
'boost::program_options::detail::common_config_file_iterator'
E:\dev\devel\boost\boost/iterator/iterator_facade.hpp(420) :
error C2039: 'advance' : is not a member of
'boost::program_options::detail::common_config_file_iterator'
I'm not sure how to implement at least empty stubs or if this can be otherwise worked
around.
Yours,
Jürgen
-- * Dipl.-Math. Jürgen Hunold ! * voice: ++49 4257 300 ! Fährstraße 1 * fax : ++49 4257 300 ! 31609 Balge/Sebbenhausen * jhunold_at_gmx.eu ! Germany
compile-c-c++ E:\dev\devel\boost\bin.v2\libs\program_options\build\msvc-11.0\develop\config_file.obj
config_file.cpp
E:\dev\devel\boost\boost/program_options/detail/config_file.hpp(67) : warning C4251: 'boost::eof_iterator<Derived,ValueType>::m_value' : class 'boost::program_options::basic_option<charT>' needs to have dll-interface to be used by clients of class 'boost::eof_iterator<Derived,ValueType>'
with
[
Derived=boost::program_options::detail::common_config_file_iterator,
ValueType=boost::program_options::option
]
and
[
charT=char
]
and
[
Derived=boost::program_options::detail::common_config_file_iterator,
ValueType=boost::program_options::option
]
E:\dev\devel\boost\boost/program_options/detail/config_file.hpp(101) : warning C4251: 'boost::program_options::detail::common_config_file_iterator::allowed_options' : class 'std::set<_Kty>' needs to have dll-interface to be used by clients of class 'boost::program_options::detail::common_config_file_iterator'
with
[
_Kty=std::string
]
E:\dev\devel\boost\boost/program_options/detail/config_file.hpp(103) : warning C4251: 'boost::program_options::detail::common_config_file_iterator::allowed_prefixes' : class 'std::set<_Kty>' needs to have dll-interface to be used by clients of class 'boost::program_options::detail::common_config_file_iterator'
with
[
_Kty=std::string
]
E:\dev\devel\boost\boost/program_options/detail/config_file.hpp(104) : warning C4251: 'boost::program_options::detail::common_config_file_iterator::m_prefix' : class 'std::basic_string<_Elem,_Traits,_Alloc>' needs to have dll-interface to be used by clients of class 'boost::program_options::detail::common_config_file_iterator'
with
[
_Elem=char,
_Traits=std::char_traits<char>,
_Alloc=std::allocator<char>
]
E:\dev\devel\boost\boost/iterator/iterator_facade.hpp(402) : error C2039: 'decrement' : is not a member of 'boost::program_options::detail::common_config_file_iterator'
E:\dev\devel\boost\boost/program_options/detail/config_file.hpp(66) : see declaration of 'boost::program_options::detail::common_config_file_iterator'
E:\dev\devel\boost\boost/iterator/iterator_facade.hpp(538) : see reference to function template instantiation 'void boost::iterator_core_access::decrement<Derived>(Facade &)' being compiled
with
[
Derived=boost::program_options::detail::common_config_file_iterator,
Facade=boost::program_options::detail::common_config_file_iterator
]
E:\dev\devel\boost\boost/iterator/iterator_facade.hpp(537) : while compiling class template member function 'boost::program_options::detail::common_config_file_iterator &boost::iterator_facade<Derived,Value,CategoryOrTraversal>::operator --(void)'
with
[
Derived=boost::program_options::detail::common_config_file_iterator,
Value=const boost::program_options::option,
CategoryOrTraversal=boost::forward_traversal_tag
]
E:\dev\devel\boost\boost/program_options/eof_iterator.hpp(47) : see reference to class template instantiation 'boost::iterator_facade<Derived,Value,CategoryOrTraversal>' being compiled
with
[
Derived=boost::program_options::detail::common_config_file_iterator,
Value=const boost::program_options::option,
CategoryOrTraversal=boost::forward_traversal_tag
]
E:\dev\devel\boost\boost/program_options/detail/config_file.hpp(67) : see reference to class template instantiation 'boost::eof_iterator<Derived,ValueType>' being compiled
with
[
Derived=boost::program_options::detail::common_config_file_iterator,
ValueType=boost::program_options::option
]
E:\dev\devel\boost\boost/iterator/iterator_facade.hpp(420) : error C2039: 'advance' : is not a member of 'boost::program_options::detail::common_config_file_iterator'
E:\dev\devel\boost\boost/program_options/detail/config_file.hpp(66) : see declaration of 'boost::program_options::detail::common_config_file_iterator'
E:\dev\devel\boost\boost/iterator/iterator_facade.hpp(551) : see reference to function template instantiation 'void boost::iterator_core_access::advance<Derived>(Facade &,__w64 int)' being compiled
with
[
Derived=boost::program_options::detail::common_config_file_iterator,
Facade=boost::program_options::detail::common_config_file_iterator
]
E:\dev\devel\boost\boost/iterator/iterator_facade.hpp(550) : while compiling class template member function 'boost::program_options::detail::common_config_file_iterator &boost::iterator_facade<Derived,Value,CategoryOrTraversal>::operator +=(__w64 int)'
with
[
Derived=boost::program_options::detail::common_config_file_iterator,
Value=const boost::program_options::option,
CategoryOrTraversal=boost::forward_traversal_tag
]
call "C:\Program Files (x86)\Microsoft Visual Studio 11.0\vc\vcvarsall.bat" x86 >nul
cl /Zm800 -nologo @"E:\dev\devel\boost\bin.v2\libs\program_options\build\msvc-11.0\develop\config_file.obj.rsp"
...failed compile-c-c++ E:\dev\devel\boost\bin.v2\libs\program_options\build\msvc-11.0\develop\config_file.obj...
...removing E:\dev\devel\boost\bin.v2\libs\program_options\build\msvc-11.0\develop\config_file.obj
compile-c-c++ E:\dev\devel\boost\bin.v2\libs\program_options\build\msvc-11.0\develop\parsers.obj
parsers.cpp
E:\dev\devel\boost\boost/program_options/detail/config_file.hpp(67) : warning C4251: 'boost::eof_iterator<Derived,ValueType>::m_value' : class 'boost::program_options::basic_option<charT>' needs to have dll-interface to be used by clients of class 'boost::eof_iterator<Derived,ValueType>'
with
[
Derived=boost::program_options::detail::common_config_file_iterator,
ValueType=boost::program_options::option
]
and
[
charT=char
]
and
[
Derived=boost::program_options::detail::common_config_file_iterator,
ValueType=boost::program_options::option
]
E:\dev\devel\boost\boost/program_options/detail/config_file.hpp(101) : warning C4251: 'boost::program_options::detail::common_config_file_iterator::allowed_options' : class 'std::set<_Kty>' needs to have dll-interface to be used by clients of class 'boost::program_options::detail::common_config_file_iterator'
with
[
_Kty=std::string
]
E:\dev\devel\boost\boost/program_options/detail/config_file.hpp(103) : warning C4251: 'boost::program_options::detail::common_config_file_iterator::allowed_prefixes' : class 'std::set<_Kty>' needs to have dll-interface to be used by clients of class 'boost::program_options::detail::common_config_file_iterator'
with
[
_Kty=std::string
]
E:\dev\devel\boost\boost/program_options/detail/config_file.hpp(104) : warning C4251: 'boost::program_options::detail::common_config_file_iterator::m_prefix' : class 'std::basic_string<_Elem,_Traits,_Alloc>' needs to have dll-interface to be used by clients of class 'boost::program_options::detail::common_config_file_iterator'
with
[
_Elem=char,
_Traits=std::char_traits<char>,
_Alloc=std::allocator<char>
]
E:\dev\devel\boost\boost/iterator/iterator_facade.hpp(402) : error C2039: 'decrement' : is not a member of 'boost::program_options::detail::common_config_file_iterator'
E:\dev\devel\boost\boost/program_options/detail/config_file.hpp(66) : see declaration of 'boost::program_options::detail::common_config_file_iterator'
E:\dev\devel\boost\boost/iterator/iterator_facade.hpp(538) : see reference to function template instantiation 'void boost::iterator_core_access::decrement<Derived>(Facade &)' being compiled
with
[
Derived=boost::program_options::detail::common_config_file_iterator,
Facade=boost::program_options::detail::common_config_file_iterator
]
E:\dev\devel\boost\boost/iterator/iterator_facade.hpp(537) : while compiling class template member function 'boost::program_options::detail::common_config_file_iterator &boost::iterator_facade<Derived,Value,CategoryOrTraversal>::operator --(void)'
with
[
Derived=boost::program_options::detail::common_config_file_iterator,
Value=const boost::program_options::option,
CategoryOrTraversal=boost::forward_traversal_tag
]
e:\dev\devel\boost\boost\program_options\eof_iterator.hpp(47) : see reference to class template instantiation 'boost::iterator_facade<Derived,Value,CategoryOrTraversal>' being compiled
with
[
Derived=boost::program_options::detail::common_config_file_iterator,
Value=const boost::program_options::option,
CategoryOrTraversal=boost::forward_traversal_tag
]
E:\dev\devel\boost\boost/program_options/detail/config_file.hpp(67) : see reference to class template instantiation 'boost::eof_iterator<Derived,ValueType>' being compiled
with
[
Derived=boost::program_options::detail::common_config_file_iterator,
ValueType=boost::program_options::option
]
E:\dev\devel\boost\boost/iterator/iterator_facade.hpp(420) : error C2039: 'advance' : is not a member of 'boost::program_options::detail::common_config_file_iterator'
E:\dev\devel\boost\boost/program_options/detail/config_file.hpp(66) : see declaration of 'boost::program_options::detail::common_config_file_iterator'
E:\dev\devel\boost\boost/iterator/iterator_facade.hpp(551) : see reference to function template instantiation 'void boost::iterator_core_access::advance<Derived>(Facade &,__w64 int)' being compiled
with
[
Derived=boost::program_options::detail::common_config_file_iterator,
Facade=boost::program_options::detail::common_config_file_iterator
]
E:\dev\devel\boost\boost/iterator/iterator_facade.hpp(550) : while compiling class template member function 'boost::program_options::detail::common_config_file_iterator &boost::iterator_facade<Derived,Value,CategoryOrTraversal>::operator +=(__w64 int)'
with
[
Derived=boost::program_options::detail::common_config_file_iterator,
Value=const boost::program_options::option,
CategoryOrTraversal=boost::forward_traversal_tag
]
call "C:\Program Files (x86)\Microsoft Visual Studio 11.0\vc\vcvarsall.bat" x86 >nul
cl /Zm800 -nologo @"E:\dev\devel\boost\bin.v2\libs\program_options\build\msvc-11.0\develop\parsers.obj.rsp"
...failed compile-c-c++ E:\dev\devel\boost\bin.v2\libs\program_options\build\msvc-11.0\develop\parsers.obj...
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk