Boost logo

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