Opened 8 years ago

Last modified 8 years ago

#10026 new Bugs

Building Boost with #define BOOST_SP_ENABLE_DEBUG_HOOKS generates compile error C2665 in Visual C++ 2012

Reported by: Clifford.Jackson@… Owned by: Peter Dimov
Milestone: To Be Determined Component: smart_ptr
Version: Boost 1.55.0 Severity: Problem
Keywords: Cc: tm@…

Description

I ran the following command from a Visual C++ command window.

b2 toolset=msvc-11.0 address-model=32 variant=debug link=static threading=multi runtime-link=shared --build-type=complete define=BOOST_SP_ENABLE_DEBUG_HOOKS

I am trying to compile the Boost Libraries with the debug hooks in. Is this a Visual C++ 2012 compiler issue as I also had problems with compilation on Visual C++ 2010. Any ideas? Thanks. I have tried this compilation on both Windows 7 and Windows 8.1.

compile-c-c++ bin.v2\libs\thread\build\msvc-11.0\release\address-model-32\link-static\threading-multi\win32\thread.obj thread.cpp .\boost/smart_ptr/detail/sp_counted_impl.hpp(69) : error C2665: 'boost::sp_scalar_constructor_hook' : none of the 2 overloads could convert all the argument types

.\boost/smart_ptr/detail/sp_counted_impl.hpp(45): could be 'void boost::sp_scalar_constructor_hook(void *,size_t,void *)' while trying to match the argument list '(const boost::exception_detail::clone_base *, unsigned int, boost::detail::sp_counted_impl_p<X> *const )' with [

X=const boost::exception_detail::clone_base

] .\boost/smart_ptr/detail/sp_counted_impl.hpp(66) : while compiling class template member function 'boost::detail::sp_counted_impl_p<X>::sp_counted_impl_p(X *)' with [

X=const boost::exception_detail::clone_base

] .\boost/smart_ptr/detail/shared_count.hpp(130) : see reference to function template instantiation 'boost::detail::sp_counted_impl_p<X>::sp_counted_impl_p(X *)' being compiled with [

X=const boost::exception_detail::clone_base

] .\boost/smart_ptr/detail/shared_count.hpp(130) : see reference to class template instantiation 'boost::detail::sp_counted_impl_p<X>' being compiled with [

X=const boost::exception_detail::clone_base

] .\boost/smart_ptr/shared_ptr.hpp(276) : see reference to function template instantiation 'boost::detail::shared_count::shared_count<Y>(Y *)' being compiled with [

Y=const boost::exception_detail::clone_base

] .\boost/smart_ptr/shared_ptr.hpp(354) : see reference to function template instantiation 'void boost::detail::sp_pointer_construct<const boost::exception_detail::clone_base,Y>(boost::shared_ptr<T> *,Y *,boost::detail::shared_count &)' being compiled with [

Y=const boost::exception_detail::clone_base, T=const boost::exception_detail::clone_base

] .\boost/exception/detail/exception_ptr.hpp(313) : see reference to function template instantiation 'boost::shared_ptr<T>::shared_ptr<const boost::exception_detail::clone_base>(Y *)' being compiled with [

T=const boost::exception_detail::clone_base, Y=const boost::exception_detail::clone_base

] .\boost/exception/detail/exception_ptr.hpp(313) : see reference to function template instantiation 'boost::shared_ptr<T>::shared_ptr<const boost::exception_detail::clone_base>(Y *)' being compiled with [

T=const boost::exception_detail::clone_base, Y=const boost::exception_detail::clone_base

]

Change History (2)

comment:1 by tm@…, 8 years ago

Cc: tm@… added

Also seen similar behavior in our codebase:

[58/1477] CXX 3rdParty/Boost/src/libs/program_options/src/options_description.o
FAILED: /Users/tobias/llvm/bin/clang++ -MMD -MF 3rdParty/Boost/src/libs/program_options/src/options_description.o.d -c -O0 -fsanitize=address -fno-omit-frame-pointer -DBOOST_SP_ENABLE_DEBUG_HOOKS -DBOOST_SIGNALS_NO_DEPRECATION_WARNING -g -isystem /Users/tobias/dev/rep/swift-work-clean/3rdParty/Boost/src -DSWIFT_EXPERIMENTAL_FT -DSWIFT_EXPERIMENTAL_HISTORY -DSWIFT_EXPERIMENTAL_WB -DBOOST_ALL_NO_LIB -DBOOST_SYSTEM_NO_DEPRECATED -I. -c 3rdParty/Boost/src/libs/program_options/src/options_description.cpp -o 3rdParty/Boost/src/libs/program_options/src/options_description.o
In file included from 3rdParty/Boost/src/libs/program_options/src/options_description.cpp:10:
In file included from /Users/tobias/dev/rep/swift-work-clean/3rdParty/Boost/src/boost/program_options/options_description.hpp:16:
In file included from /Users/tobias/dev/rep/swift-work-clean/3rdParty/Boost/src/boost/shared_ptr.hpp:17:
In file included from /Users/tobias/dev/rep/swift-work-clean/3rdParty/Boost/src/boost/smart_ptr/shared_ptr.hpp:32:
In file included from /Users/tobias/dev/rep/swift-work-clean/3rdParty/Boost/src/boost/smart_ptr/detail/shared_count.hpp:30:
/Users/tobias/dev/rep/swift-work-clean/3rdParty/Boost/src/boost/smart_ptr/detail/sp_counted_impl.hpp:69:44: error: cannot initialize a parameter of type 'void *' with an lvalue of type 'const boost::program_options::value_semantic *'
        boost::sp_scalar_constructor_hook( px, sizeof(X), this );
                                           ^~
/Users/tobias/dev/rep/swift-work-clean/3rdParty/Boost/src/boost/smart_ptr/detail/shared_count.hpp:91:23: note: in instantiation of member function 'boost::detail::sp_counted_impl_p<const boost::program_options::value_semantic>::sp_counted_impl_p' requested here
            pi_ = new sp_counted_impl_p<Y>( p );
                      ^
/Users/tobias/dev/rep/swift-work-clean/3rdParty/Boost/src/boost/smart_ptr/shared_ptr.hpp:183:44: note: in instantiation of function template specialization 'boost::detail::shared_count::shared_count<const boost::program_options::value_semantic>' requested here
    explicit shared_ptr( Y * p ): px( p ), pn( p ) // Y must be complete
                                           ^
3rdParty/Boost/src/libs/program_options/src/options_description.cpp:54:7: note: in instantiation of function template specialization 'boost::shared_ptr<const boost::program_options::value_semantic>::shared_ptr<const boost::program_options::value_semantic>' requested here
    : m_value_semantic(s)
      ^
/Users/tobias/dev/rep/swift-work-clean/3rdParty/Boost/src/boost/smart_ptr/detail/sp_counted_impl.hpp:45:41: note: passing argument to parameter 'px' here
void sp_scalar_constructor_hook( void * px, std::size_t size, void * pn );
                                        ^
1 error generated.
[58/1477] CXX 3rdParty/Boost/src/libs/program_options/src/value_semantic.o
ninja: build stopped: subcommand failed.

comment:2 by viboes, 8 years ago

Component: Building Boostsmart_ptr
Owner: set to Peter Dimov
Note: See TracTickets for help on using tickets.