Opened 8 years ago
Closed 6 years ago
#10732 closed Bugs (invalid)
clang-3.5 splay_set compiling error
Reported by: | Owned by: | Ion Gaztañaga | |
---|---|---|---|
Milestone: | To Be Determined | Component: | intrusive |
Version: | Boost 1.57.0 | Severity: | Problem |
Keywords: | splay_set default_bstree_hook | Cc: |
Description
When compiling libcds project, the following error is encountered for clang-3.4, clang-3.5 64bit:
In file included from /home/khizmax/works/lib/boost_1_57_0_b1/boost/intrusive/splay_set.hpp:21: In file included from /home/khizmax/works/lib/boost_1_57_0_b1/boost/intrusive/splaytree.hpp:26: In file included from /home/khizmax/works/lib/boost_1_57_0_b1/boost/intrusive/bstree.hpp:25: In file included from /home/khizmax/works/lib/boost_1_57_0_b1/boost/intrusive/bs_set_hook.hpp:25: /home/khizmax/works/lib/boost_1_57_0_b1/boost/intrusive/options.hpp:54:48: error: no type named 'default_bstree_hook' in 'set::IntrusiveStripedSetHdrTest::base_item<boost::intrusive::bs_set_member_hook<void, void, void> >' BOOST_INTRUSIVE_DEFAULT_HOOK_MARKER_DEFINITION(default_bstree_hook);
The same error is observed or boost 1.55, 1.56, 1.57 beta1. Clang-3.3 and gcc-4.8, gcc-4.9 64bit is ok. Environment: ubuntu-14.04 amd64
Compiler output:
clang-3.5 -std=c++11 -c -pedantic -Wall -mcx16 -march=native -DNDEBUG -O3 -fno-strict-aliasing -m64 -fPIC -march=native -I/home/khizmax/works/lib/boost_1_57_0_b1 -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -D_FILE_OFFSET_BITS=64 -I.. -I../tests/test-hdr -I../tests ../tests/test-hdr/set/hdr_intrusive_refinable_hashset_splayset.cpp -o ../tests/test-hdr/set/hdr_intrusive_refinable_hashset_splayset.o In file included from ../tests/test-hdr/set/hdr_intrusive_refinable_hashset_splayset.cpp:4: In file included from ../cds/intrusive/striped_set/boost_splay_set.h:6: In file included from /home/khizmax/works/lib/boost_1_57_0_b1/boost/intrusive/splay_set.hpp:21: In file included from /home/khizmax/works/lib/boost_1_57_0_b1/boost/intrusive/splaytree.hpp:26: In file included from /home/khizmax/works/lib/boost_1_57_0_b1/boost/intrusive/bstree.hpp:25: In file included from /home/khizmax/works/lib/boost_1_57_0_b1/boost/intrusive/bs_set_hook.hpp:25: /home/khizmax/works/lib/boost_1_57_0_b1/boost/intrusive/options.hpp:54:48: error: no type named 'default_bstree_hook' in 'set::IntrusiveStripedSetHdrTest::base_item<boost::intrusive::bs_set_member_hook<void, void, void> >' BOOST_INTRUSIVE_DEFAULT_HOOK_MARKER_DEFINITION(default_bstree_hook); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~ /home/khizmax/works/lib/boost_1_57_0_b1/boost/intrusive/options.hpp:46:27: note: expanded from macro 'BOOST_INTRUSIVE_DEFAULT_HOOK_MARKER_DEFINITION' { typedef typename T::BOOST_INTRUSIVE_DEFAULT_HOOK_MARKER type; };\ ^ /home/khizmax/works/lib/boost_1_57_0_b1/boost/intrusive/detail/mpl.hpp:139:24: note: in instantiation of template class 'boost::intrusive::detail::default_bstree_hook::apply<set::IntrusiveStripedSetHdrTest::base_item<boost::intrusive::bs_set_member_hook<void, void, void> > >' requested here typedef typename F::template apply<Param>::type type; ^ /home/khizmax/works/lib/boost_1_57_0_b1/boost/intrusive/detail/mpl.hpp:203:7: note: in instantiation of template class 'boost::intrusive::detail::apply<boost::intrusive::detail::default_bstree_hook, set::IntrusiveStripedSetHdrTest::base_item<boost::intrusive::bs_set_member_hook<void, void, void> > >' requested here : if_c<C,F1,F2>::type ^ /home/khizmax/works/lib/boost_1_57_0_b1/boost/intrusive/options.hpp:145:21: note: in instantiation of template class 'boost::intrusive::detail::eval_if_c<true, boost::intrusive::detail::apply<boost::intrusive::detail::default_bstree_hook, set::IntrusiveStripedSetHdrTest::base_item<boost::intrusive::bs_set_member_hook<void, void, void> > >, boost::intrusive::detail::identity<boost::intrusive::detail::default_bstree_hook> >' requested here typedef typename eval_if_c ^ /home/khizmax/works/lib/boost_1_57_0_b1/boost/intrusive/splay_set.hpp:440:29: note: in instantiation of template class 'boost::intrusive::detail::get_value_traits<set::IntrusiveStripedSetHdrTest::base_item<boost::intrusive::bs_set_member_hook<void, void, void> >, boost::intrusive::detail::default_bstree_hook>' requested here typedef typename detail::get_value_traits ^ /home/khizmax/works/lib/boost_1_57_0_b1/boost/intrusive/splay_set.hpp:463:14: note: in instantiation of template class 'boost::intrusive::make_splay_set<set::IntrusiveStripedSetHdrTest::base_item<boost::intrusive::bs_set_member_hook<void, void, void> >, boost::intrusive::compare<set::IntrusiveStripedSetHdrTest::less<set::IntrusiveStripedSetHdrTest::base_item<boost::intrusive::bs_set_member_hook<void, void, void> > > >, void, void, void, void>' requested here : public make_splay_set<T, ^ ../cds/intrusive/striped_set/adapter.h:202:34: note: in instantiation of template class 'boost::intrusive::splay_set<set::IntrusiveStripedSetHdrTest::base_item<boost::intrusive::bs_set_member_hook<void, void, void> >, boost::intrusive::compare<set::IntrusiveStripedSetHdrTest::less<set::IntrusiveStripedSetHdrTest::base_item<boost::intrusive::bs_set_member_hook<void, void, void> > > >, void, void, void, void>' requested here typedef typename container_type::value_type value_type ; ///< value type stored in the container ^ ../cds/intrusive/striped_set.h:279:26: note: in instantiation of template class 'cds::intrusive::striped_set::details::boost_intrusive_set_adapter<boost::intrusive::splay_set<set::IntrusiveStripedSetHdrTest::base_item<boost::intrusive::bs_set_member_hook<void, void, void> >, boost::intrusive::compare<set::IntrusiveStripedSetHdrTest::less<set::IntrusiveStripedSetHdrTest::base_item<boost::intrusive::bs_set_member_hook<void, void, void> > > >, void, void, void, void> >' requested here typedef typename bucket_type::value_type value_type ; ///< value type stored in the set ^ ../tests/test-hdr/set/hdr_intrusive_refinable_hashset_splayset.cpp:56:18: note: in instantiation of template class 'cds::intrusive::StripedSet<boost::intrusive::splay_set<set::IntrusiveStripedSetHdrTest::base_item<boost::intrusive::bs_set_member_hook<void, void, void> >, boost::intrusive::compare<set::IntrusiveStripedSetHdrTest::less<set::IntrusiveStripedSetHdrTest::base_item<boost::intrusive::bs_set_member_hook<void, void, void> > > >, void, void, void, void>, cds::opt::mutex_policy<cds::intrusive::striped_set::refinable<std::recursive_mutex, cds::backoff::yield, std::allocator<int> > >, cds::opt::hash<set::IntrusiveStripedSetHdrTest::hash_int>, cds::opt::resizing_policy<cds::intrusive::striped_set::single_bucket_size_threshold<0> > >' requested here set_type s( 64, ci::striped_set::single_bucket_size_threshold<0>(256) ); ^
Change History (5)
comment:1 by , 8 years ago
comment:2 by , 8 years ago
MSVC 2013 Update 4 RC: similar error:
1>d:\Developer\libs\boost_1_56_0\boost/intrusive/options.hpp(50): error C2039: 'default_bstree_hook' : is not a member of 'set::IntrusiveStripedSetHdrTest::base_item<set::`anonymous-namespace'::splay_set_base_hook>' 1> d:\Developer\libs\boost_1_56_0\boost/intrusive/detail/mpl.hpp(118) : see reference to class template instantiation 'boost::intrusive::detail::default_bstree_hook::apply<Param>' being compiled 1> with 1> [ 1> Param=set::`anonymous-namespace'::base_item_type 1> ] 1> d:\Developer\libs\boost_1_56_0\boost/intrusive/detail/mpl.hpp(183) : see reference to class template instantiation 'boost::intrusive::detail::apply<SupposedValueTraits,T>' being compiled 1> with 1> [ 1> SupposedValueTraits=boost::intrusive::splaytree_defaults::proto_value_traits 1> , T=set::`anonymous-namespace'::base_item_type 1> ] 1> d:\Developer\libs\boost_1_56_0\boost/intrusive/options.hpp(132) : see reference to class template instantiation 'boost::intrusive::detail::eval_if_c<true,boost::intrusive::detail::apply<SupposedValueTraits,T>,boost::intrusive::detail::identity<SupposedValueTraits>>' being compiled 1> with 1> [ 1> SupposedValueTraits=boost::intrusive::splaytree_defaults::proto_value_traits 1> , T=set::`anonymous-namespace'::base_item_type 1> ] 1> d:\Developer\libs\boost_1_56_0\boost/intrusive/splay_set.hpp(437) : see reference to class template instantiation 'boost::intrusive::detail::get_value_traits<T,boost::intrusive::splaytree_defaults::proto_value_traits>' being compiled 1> with 1> [ 1> T=set::`anonymous-namespace'::base_item_type 1> ] 1> d:\Developer\libs\boost_1_56_0\boost/intrusive/splay_set.hpp(465) : see reference to class template instantiation 'boost::intrusive::make_splay_set<T,O1,O2,O3,O4,O5>' being compiled 1> with 1> [ 1> T=set::`anonymous-namespace'::base_item_type 1> , O1=boost::intrusive::compare<set::IntrusiveStripedSetHdrTest::less<set::`anonymous-namespace'::base_item_type>> 1> , O2=void 1> , O3=void 1> , O4=void 1> , O5=void 1> ]
comment:3 by , 8 years ago
I can't deduce much from the error log. Could you please send a little compilable example?
comment:4 by , 8 years ago
Oops, it is my mistake, sorry. Looks like I jumbled base and member hook for boost 1.56+.
I apologise, please, close the ticket.
comment:5 by , 6 years ago
Resolution: | → invalid |
---|---|
Status: | new → closed |
Reviewing old bugs. Closing as requested by reporter.
Note:
See TracTickets
for help on using tickets.
Similar error for Intel C++ 15 compiler for Linux (icc):