Opened 13 years ago
Closed 13 years ago
#3729 closed Bugs (invalid)
boost.log and 1.41.0 : external linkage error
Reported by: | Owned by: | Ion Gaztañaga | |
---|---|---|---|
Milestone: | Boost 1.42.0 | Component: | intrusive |
Version: | Boost 1.41.0 | Severity: | Problem |
Keywords: | Cc: |
Description
compilation of boost.log (http://boost-log.sourceforge.net) within boost 1.41 on Mac OSX 10.5 and gcc 4.2.1 fails due to an "external linkage" error:
./boost/intrusive/detail/is_stateful_value_traits.hpp:38: error: ‘& boost::intrusive::derivation_value_traits<T, NodeTraits, LinkMode>::to_node_ptr [with T = boost::log_mt_posix::basic_attribute_set<char>::implementation::node, NodeTraits = boost::log_mt_posix::<unnamed>::ordered_list<boost::log_mt_posix::basic_attribute_set<char>::implementation::node, boost::log_mt_posix::basic_attribute_set<char>::node_base>::node_traits, boost::intrusive::link_mode_type LinkMode = safe_link]’ is not a valid template argument for type ‘boost::log_mt_posix::basic_attribute_set<char>::node_base* (*)(boost::log_mt_posix::basic_attribute_set<char>::implementation::node&)’ because function ‘static typename NodeTraits::node_ptr boost::intrusive::derivation_value_traits<T, NodeTraits, LinkMode>::to_node_ptr(typename std::iterator_traits<typename boost::pointer_to_other<typename NodeTraits::node_ptr, T>::type>::reference) [with T = boost::log_mt_posix::basic_attribute_set<char>::implementation::node, NodeTraits = boost::log_mt_posix::<unnamed>::ordered_list<boost::log_mt_posix::basic_attribute_set<char>::implementation::node, boost::log_mt_posix::basic_attribute_set<char>::node_base>::node_traits, boost::intrusive::link_mode_type LinkMode = safe_link]’ has not external linkage
"g++" -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -dynamic -no-cpp-precomp -gdwarf-2 -fPIC -DBOOST_ALL_NO_LIB=1 -DBOOST_DATE_TIME_DYN_LINK=1 -DBOOST_FILESYSTEM_DYN_LINK=1 -DBOOST_LOG_BUILDING_THE_LIB=1 -DBOOST_LOG_DLL -DBOOST_LOG_USE_CHAR -DBOOST_LOG_USE_NATIVE_SYSLOG=1 -DBOOST_SYSTEM_DYN_LINK=1 -DBOOST_THREAD_POSIX -DBOOST_THREAD_USE_DLL=1 -DDATE_TIME_INLINE -DNDEBUG -I"." -c -o "bin.v2/libs/log/build/darwin-4.2.1/release/threading-multi/attribute_set.o" "libs/log/src/attribute_set.cpp"
I had reported the problem to the boost.log maintaner before to open the ticket and the response was:
Looks like a compiler bug to me since the derivation_value_traits::to_value_ptr clearly has external linkage. You should report the problem to Boost.Intrusive maintainer. I'm not sure I can work it around on Boost.Log side.
From the Boost developers ML:
-- Kim Barrett