id summary reporter owner description type status milestone component version severity resolution keywords cc 13404 boost::container::container_detail::forward_as_tuple conflicts with std::forward_as_tuple Mikhail Kremniov Ion Gaztañaga "Internals of libc++ make unqualified calls to forward_as_tuple; this may result in the ""call ... is ambiguous"" error if boost::container::container_detail is one of the associated namespaces for the call. E.g. test.cpp: {{{ #include #include int main() { boost::container::set set; std::tuple_cat(std::make_tuple(set)); } }}} The terminal: {{{ $ clang++-5.0 ~/tmp/test.cpp -std=c++14 -o test -stdlib=libc++ -isystem ./boost_1_66_0 In file included from /home/brd/tmp/test.cpp:1: In file included from ./boost_1_66_0/boost/container/set.hpp:28: In file included from ./boost_1_66_0/boost/container/detail/tree.hpp:36: In file included from ./boost_1_66_0/boost/container/detail/node_alloc_holder.hpp:30: In file included from ./boost_1_66_0/boost/container/detail/allocator_version_traits.hpp:26: In file included from ./boost_1_66_0/boost/container/throw_exception.hpp:27: In file included from /home/brd/soft/clang+llvm-5.0.0-linux-x86_64-ubuntu14.04/bin/../include/c++/v1/string:470: In file included from /home/brd/soft/clang+llvm-5.0.0-linux-x86_64-ubuntu14.04/bin/../include/c++/v1/string_view:169: In file included from /home/brd/soft/clang+llvm-5.0.0-linux-x86_64-ubuntu14.04/bin/../include/c++/v1/__string:56: In file included from /home/brd/soft/clang+llvm-5.0.0-linux-x86_64-ubuntu14.04/bin/../include/c++/v1/algorithm:643: In file included from /home/brd/soft/clang+llvm-5.0.0-linux-x86_64-ubuntu14.04/bin/../include/c++/v1/memory:653: /home/brd/soft/clang+llvm-5.0.0-linux-x86_64-ubuntu14.04/bin/../include/c++/v1/tuple:1318:16: error: call to 'forward_as_tuple' is ambiguous return forward_as_tuple(_VSTD::forward<_Types>(_VSTD::get<_I0>(__t))..., ^~~~~~~~~~~~~~~~ /home/brd/soft/clang+llvm-5.0.0-linux-x86_64-ubuntu14.04/bin/../include/c++/v1/tuple:1348:12: note: in instantiation of function template specialization 'std::__1::__tuple_cat, std::__1::__tuple_indices<>, std::__1::__tuple_indices<0> >::operator(), boost::container::new_allocator, boost::container::tree_opt > > >' requested here return __tuple_cat, __tuple_indices<>, ^ /home/brd/tmp/test.cpp:8:10: note: in instantiation of function template specialization 'std::__1::tuple_cat, boost::container::new_allocator, boost::container::tree_opt > >>' requested here std::tuple_cat(std::make_tuple(set)); ^ ./boost_1_66_0/boost/container/detail/variadic_templates_tools.hpp:81:20: note: candidate function [with Values = , boost::container::new_allocator, boost::container::tree_opt >>] tuple forward_as_tuple(Values&&... values) ^ /home/brd/soft/clang+llvm-5.0.0-linux-x86_64-ubuntu14.04/bin/../include/c++/v1/tuple:1114:1: note: candidate function [with _Tp = , boost::container::new_allocator, boost::container::tree_opt >>] forward_as_tuple(_Tp&&... __t) _NOEXCEPT ^ 1 error generated. }}} P.S. I wonder, why is boost::container::container_detail::forward_as_tuple needed at all, since it doesn't seem to be used outside of tests. Can it be removed?" Bugs new To Be Determined container Boost 1.66.0 Problem