Boost logo

Boost :

Subject: Re: [boost] 1.56.0 beta 1 release candidates available for testing
From: Klaim - Joël Lamotte (mjklaim_at_[hidden])
Date: 2014-07-14 20:46:18


After trying to compile my own project (using the previously installed
boost) I find other install problems:

 - uuid library is not installed (no header or directory is installed, but
it is present in my repository working directory - boost_github directory);
 - signals2 is not installed either (no header or directory as for uuid);

At this point I tried to install the headers of these libraries manually
(copy/paste of the headers from the repo to the include directory).
I also fixed includes that have changed, notably Filesystem and Program
Options changes, to compile my projects.
I still found:

 -
...\boost\include\boost-1_56\boost\signals2\detail\null_output_iterator.hpp(14):
fatal error C1083: Cannot open include file:
'boost/function_output_iterator.hpp': No such file or directory
     I checked that the iterator library was actually installed and it is
but only partially:
       - function_output_iterator.hpp
       - generator_iterator.hpp
       - shared_container_iterator.hpp
     which I found in my boost git working directory were not installed,
but other files from iterator were installed.
     I installed them manually.
  - I got this link error:

3>typevaluemap.obj : error LNK2019: unresolved external symbol "class
std::basic_ostream<char,struct std::char_traits<char> > & __cdecl
boost::operator<<<char,struct std::char_traits<char>,int>(class
std::basic_ostream<char,struct std::char_traits<char> > &,class
boost::optional<int> const &)" (??$?6DU?$char_traits_at_D@std@@H_at_boost
@@YAAAV?$basic_ostream_at_DU?$char_traits_at_D@std@@@std@@AAV12_at_ABV?$optional_at_H@0@@Z)
referenced in function "void __cdecl
testing_internal::DefaultPrintNonContainerTo<class boost::optional<int>
>(class boost::optional<int> const &,class std::basic_ostream<char,struct
std::char_traits<char> > *)" (??$DefaultPrintNonContainerTo_at_V?$optional_at_H
@boost@@@testing_internal@@YAXABV?$optional_at_H@boost@@PAV?$basic_ostream_at_DU
?$char_traits_at_D@std@@@std@@@Z)
3>typevaluemap.obj : error LNK2019: unresolved external symbol "class
std::basic_ostream<char,struct std::char_traits<char> > & __cdecl
boost::operator<<<char,struct std::char_traits<char>,float>(class
std::basic_ostream<char,struct std::char_traits<char> > &,class
boost::optional<float> const &)" (??$?6DU?$char_traits_at_D@std@@M_at_boost
@@YAAAV?$basic_ostream_at_DU?$char_traits_at_D@std@@@std@@AAV12_at_ABV?$optional_at_M@0@@Z)
referenced in function "void __cdecl
testing_internal::DefaultPrintNonContainerTo<class boost::optional<float>
>(class boost::optional<float> const &,class std::basic_ostream<char,struct
std::char_traits<char> > *)" (??$DefaultPrintNonContainerTo_at_V?$optional_at_M
@boost@@@testing_internal@@YAXABV?$optional_at_M@boost@@PAV?$basic_ostream_at_DU
?$char_traits_at_D@std@@@std@@@Z)

The corresponding cpp file is a test file for a header-only class provided
in another library.
I can provide all the files if needed but it seems that the problem is in
the optional library, which is used in the interface of the TypeValueMap
type tested there.
For example, the functions using boost::optional are defined this way:

    template< class ValueType >
    inline boost::optional<ValueType> TypeValueMap::write( ValueType value )
    {
        boost::optional<ValueType> previous_value;
        if( auto* slot = m_slot_index.find<ValueType>() )
        {
            previous_value = slot->value;
            slot->value = value;
        }
        else
        {
            m_slot_index.create<ValueType>( std::move(value) );
        }

        if( !previous_value.is_initialized() )
        {
            size_changed();
        }

        return previous_value;
    }

    template< class ValueType >
    inline boost::optional<ValueType> TypeValueMap::read() const
    {
        auto* slot = m_slot_index.find<ValueType>();
        if( slot && slot->value )
        {
            return slot->value.get();
        }
        return {};
    }

I stop my attempt at this point but will be able to do some tests if needed
in the coming days.
I will try the boost tests after the next master updates.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk