Boost logo

Boost :

Subject: [boost] [property_tree][log] Error compiling with Visual C++ 2010 Beta 2
From: Fulvio Esposito (esposito.fulvio_at_[hidden])
Date: 2010-02-02 08:19:30


Hi all,
I'm currently experimenting with Visual C++ 2010 Beta 2. I've found
compilation problems related to property_tree and log libraries. Hope it's
not a problem to send a single post for two libraries.

Boost.PropertyTree:

the simplest program:

#include "stdafx.h"
#include <boost/property_tree/ptree.hpp>

int _tmain(int argc, _TCHAR* argv[])
{
    boost::property_tree::ptree tree;
    return 0;
}

generate the error:
c:\users\fulvio\sviluppo\boost_1_41_0\boost\property_tree\detail\ptree_implementation.hpp(30):
error C2440: 'specialization' : cannot convert from 'const std::string
std::_Pair_base<_Ty1,_Ty2>::* ' to 'const
std::basic_string<_Elem,_Traits,_Ax> std::pair<_Ty1,_Ty2>::* '
1> with
1> [
1> _Ty1=const std::string,
1>
_Ty2=boost::property_tree::basic_ptree<std::string,std::string>
1> ]
1> and
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>,
1> _Ax=std::allocator<char>,
1> _Ty1=const std::string,
1>
_Ty2=boost::property_tree::basic_ptree<std::string,std::string>
1> ]
1> Standard conversion from pointer-to-member of base to
pointer-to-member of derived is not applied for template arguments
1>
c:\users\fulvio\sviluppo\boost_1_41_0\boost\property_tree\detail\ptree_implementation.hpp(159)
: see reference to class template instantiation
'boost::property_tree::basic_ptree<Key,Data>::subs' being compiled
1> with
1> [
1> Key=std::string,
1> Data=std::string
1> ]
1>
c:\users\fulvio\sviluppo\boost_1_41_0\boost\property_tree\detail\ptree_implementation.hpp(159)
: while compiling class template member function
'boost::property_tree::basic_ptree<Key,Data>::basic_ptree(void)'
1> with
1> [
1> Key=std::string,
1> Data=std::string
1> ]
1> d:\documenti\visual studio
2010\projects\testpropertytree\testpropertytree\testpropertytree.cpp(9) :
see reference to class template instantiation
'boost::property_tree::basic_ptree<Key,Data>' being compiled
1> with
1> [
1> Key=std::string,
1> Data=std::string
1> ]

Boost.Log

The compilation with bjam gives the error:

libs\log\src\filter_parser.cpp(149) : error C2668: 'std::tr1::bind' :
ambiguous call to overloaded function
        C:\Program Files\Microsoft Visual Studio
10.0\VC\INCLUDE\xxbind1(363): could be
'std::tr1::_Bind<_Result_type,_Ret,_BindN> std::tr1::bind<void,const
std::basic_string<_Elem,_Traits,_Ax>&,double,boost::function1<R,T0>&,boost::reference_wrapper<T>,boost::arg<I>,boost::reference_wrapper<boost::function1<R,T0>>>(_Rx
(__cdecl *const )(_Farg0,_Farg1,_Farg2),_Arg0,_Arg1,_Arg2)' [found using
argument-dependent lookup]
        with
        [
            _Result_type=void,
            _Ret=void,
            _BindN=std::tr1::_Bind3<std::tr1::_Callable_fun<void (__cdecl
*const )(const
std::basic_string<char,std::char_traits<char>,std::allocator<char>>
&,double,boost::function1<bool,const
boost::log_mt_nt5::basic_attribute_values_view<char> &>
&),false>,boost::reference_wrapper<const
std::basic_string<char,std::char_traits<char>,std::allocator<char>>>,boost::arg<1>,boost::reference_wrapper<boost::function1<bool,const
boost::log_mt_nt5::basic_attribute_values_view<char> &>>>,
            _Elem=char,
            _Traits=std::char_traits<char>,
            _Ax=std::allocator<char>,
            R=bool,
            T0=const boost::log_mt_nt5::basic_attribute_values_view<char> &,
            T=const
std::basic_string<char,std::char_traits<char>,std::allocator<char>>,
            I=1,
            _Rx=void,
            _Farg0=const
std::basic_string<char,std::char_traits<char>,std::allocator<char>> &,
            _Farg1=double,
            _Farg2=boost::function1<bool,const
boost::log_mt_nt5::basic_attribute_values_view<char> &> &,
            _Arg0=boost::reference_wrapper<const
std::basic_string<char,std::char_traits<char>,std::allocator<char>>>,
            _Arg1=boost::arg<1>,
            _Arg2=boost::reference_wrapper<boost::function1<bool,const
boost::log_mt_nt5::basic_attribute_values_view<char> &>>
        ]
        C:\Users\Fulvio\Sviluppo\boost_1_41_0\boost/bind/bind_cc.hpp(46): or
'boost::_bi::bind_t<R,F,L> boost::bind<void,const
std::basic_string<_Elem,_Traits,_Ax>&,double,boost::function1<bool,T0>&,boost::reference_wrapper<T>,boost::arg<I>,boost::reference_wrapper<boost::function1<bool,T0>>>(R
(__cdecl *)(B1,B2,B3),A1,A2,A3)'
        with
        [
            R=void,
            F=void (__cdecl *)(const
std::basic_string<char,std::char_traits<char>,std::allocator<char>>
&,double,boost::function1<bool,const
boost::log_mt_nt5::basic_attribute_values_view<char> &> &),
            L=boost::_bi::list3<boost::reference_wrapper<const
std::basic_string<char,std::char_traits<char>,std::allocator<char>>>,boost::arg<1>,boost::reference_wrapper<boost::function1<bool,const
boost::log_mt_nt5::basic_attribute_values_view<char> &>>>,
            _Elem=char,
            _Traits=std::char_traits<char>,
            _Ax=std::allocator<char>,
            T0=const boost::log_mt_nt5::basic_attribute_values_view<char> &,
            T=const
std::basic_string<char,std::char_traits<char>,std::allocator<char>>,
            I=1,
            B1=const
std::basic_string<char,std::char_traits<char>,std::allocator<char>> &,
            B2=double,
            B3=boost::function1<bool,const
boost::log_mt_nt5::basic_attribute_values_view<char> &> &,
            A1=boost::reference_wrapper<const
std::basic_string<char,std::char_traits<char>,std::allocator<char>>>,
            A2=boost::arg<1>,
            A3=boost::reference_wrapper<boost::function1<bool,const
boost::log_mt_nt5::basic_attribute_values_view<char> &>>
        ]
        while trying to match the argument list '(overloaded-function, const
boost::reference_wrapper<T>, boost::arg<I>, const
boost::reference_wrapper<T>)'
        with
        [
            T=const
std::basic_string<char,std::char_traits<char>,std::allocator<char>>
        ]
        and
        [
            I=1
        ]
        and
        [
            T=boost::function1<bool,const
boost::log_mt_nt5::basic_attribute_values_view<char> &>
        ]
        libs\log\src\filter_parser.cpp(87) : see reference to function
template instantiation 'boost::function1<R,T0>
boost::log_mt_nt5::`anonymous-namespace'::default_filter_factory<CharT>::parse_argument<boost::log_mt_nt5::aux::equal_to>(const
std::basic_string<_Elem,_Traits,_Ax> &,const
std::basic_string<_Elem,_Traits,_Ax> &)' being compiled
        with
        [
            R=bool,
            T0=const boost::log_mt_nt5::basic_attribute_values_view<char> &,
            CharT=char,
            _Elem=char,
            _Traits=std::char_traits<char>,
            _Ax=std::allocator<char>
        ]
        libs\log\src\filter_parser.cpp(86) : while compiling class template
member function 'boost::function1<R,T0>
boost::log_mt_nt5::`anonymous-namespace'::default_filter_factory<CharT>::on_equality_relation(const
std::basic_string<_Elem,_Traits,_Ax> &,const
std::basic_string<_Elem,_Traits,_Ax> &)'
        with
        [
            R=bool,
            T0=const boost::log_mt_nt5::basic_attribute_values_view<char> &,
            CharT=char,
            _Elem=char,
            _Traits=std::char_traits<char>,
            _Ax=std::allocator<char>
        ]
        libs\log\src\filter_parser.cpp(208) : see reference to class
template instantiation
'boost::log_mt_nt5::`anonymous-namespace'::default_filter_factory<CharT>'
being compiled
        with
        [
            CharT=char
        ]
        libs\log\src\filter_parser.cpp(530) : see reference to class
template instantiation
'boost::log_mt_nt5::`anonymous-namespace'::filters_repository<CharT>' being
compiled
        with
        [
            CharT=char
        ]
        libs\log\src\filter_parser.cpp(569) : see reference to function
template instantiation 'void
boost::log_mt_nt5::register_filter_factory<char>(const char *,const
boost::shared_ptr<T> &)' being compiled
        with
        [
            T=boost::log_mt_nt5::filter_factory<char>
        ]

In this case I belive that an explicit namespace qualification could solve.

Fulvio Esposito
 


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