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: | 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 , 8 years ago
| Cc: | added | 
|---|
comment:2 by , 8 years ago
| Component: | Building Boost → smart_ptr | 
|---|---|
| Owner: | set to | 

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.