Boost C++ Libraries: Ticket #8260: trivial code fails to compile with clang in c++11 mode https://svn.boost.org/trac10/ticket/8260 <p> The following trivial code fails to compile with clang in C++11 mode: </p> <pre class="wiki">#include &lt;boost/signals2/signal.hpp&gt; int main() { boost::signals2::signal&lt;void()&gt; s; s(); } </pre><p> The compiler errors is: </p> <pre class="wiki">In file included from test.cpp:1: In file included from boost/signals2/signal.hpp:38: In file included from boost/signals2/variadic_signal.hpp:21: boost/signals2/detail/variadic_slot_invoker.hpp:92:16: error: no matching function for call to 'get' func(BOOST_SIGNALS2_GET&lt;indices&gt;(args)...); ^~~~~~~~~~~~~~~~~~~~~~~~~~~ boost/signals2/detail/variadic_slot_invoker.hpp:26:28: note: expanded from macro 'BOOST_SIGNALS2_GET' #define BOOST_SIGNALS2_GET boost::get ^ boost/signals2/detail/variadic_slot_invoker.hpp:81:18: note: in instantiation of function template specialization 'boost::signals2::detail::call_with_tuple_args&lt;boost::signals2::detail::void_type&gt;::m_invoke&lt;boost::function&lt;void ()&gt;, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type&gt;' requested here return m_invoke(resolver, func, indices_type(), args); ^ boost/signals2/detail/variadic_slot_invoker.hpp:117:18: note: in instantiation of function template specialization 'boost::signals2::detail::call_with_tuple_args&lt;boost::signals2::detail::void_type&gt;::operator()&lt;boost::function&lt;void ()&gt;, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type&gt;' requested here return call_with_tuple_args&lt;result_type&gt;()(connectionBody-&gt;slot.slot_function(), _args); ^ boost/signals2/detail/variadic_slot_invoker.hpp:109:18: note: in instantiation of function template specialization 'boost::signals2::detail::variadic_slot_invoker&lt;boost::signals2::detail::void_type, &gt;::m_invoke&lt;boost::shared_ptr&lt;boost::signals2::detail::connection_body&lt;std::pair&lt;boost::signals2::detail::slot_meta_group, boost::optional&lt;int&gt; &gt;, boost::signals2::slot&lt;void (), boost::function&lt;void ()&gt; &gt;, boost::signals2::mutex&gt; &gt; &gt;' requested here return m_invoke(connectionBody, ^ boost/signals2/detail/slot_call_iterator.hpp:82:35: note: in instantiation of function template specialization 'boost::signals2::detail::variadic_slot_invoker&lt;boost::signals2::detail::void_type, &gt;::operator()&lt;boost::shared_ptr&lt;boost::signals2::detail::connection_body&lt;std::pair&lt;boost::signals2::detail::slot_meta_group, boost::optional&lt;int&gt; &gt;, boost::signals2::slot&lt;void (), boost::function&lt;void ()&gt; &gt;, boost::signals2::mutex&gt; &gt; &gt;' requested here cache-&gt;result.reset(cache-&gt;f(*iter)); ^ boost/iterator/iterator_facade.hpp:449:20: note: in instantiation of member function 'boost::signals2::detail::slot_call_iterator_t&lt;boost::signals2::detail::variadic_slot_invoker&lt;boost::signals2::detail::void_type, &gt;, std::_List_iterator&lt;boost::shared_ptr&lt;boost::signals2::detail::connection_body&lt;std::pair&lt;boost::signals2::detail::slot_meta_group, boost::optional&lt;int&gt; &gt;, boost::signals2::slot&lt;void (), boost::function&lt;void ()&gt; &gt;, boost::signals2::mutex&gt; &gt; &gt;, boost::signals2::detail::connection_body&lt;std::pair&lt;boost::signals2::detail::slot_meta_group, boost::optional&lt;int&gt; &gt;, boost::signals2::slot&lt;void (), boost::function&lt;void ()&gt; &gt;, boost::signals2::mutex&gt; &gt;::dereference' requested here return f.dereference(); ^ boost/iterator/iterator_facade.hpp:575:40: note: (skipping 1 context in backtrace; use -ftemplate-backtrace-limit=0 to see all) return iterator_core_access::dereference(this-&gt;derived()); ^ boost/signals2/optional_last_value.hpp:55:13: note: in instantiation of member function 'boost::iterator_facade&lt;boost::signals2::detail::slot_call_iterator_t&lt;boost::signals2::detail::variadic_slot_invoker&lt;boost::signals2::detail::void_type, &gt;, std::_List_iterator&lt;boost::shared_ptr&lt;boost::signals2::detail::connection_body&lt;std::pair&lt;boost::signals2::detail::slot_meta_group, boost::optional&lt;int&gt; &gt;, boost::signals2::slot&lt;void (), boost::function&lt;void ()&gt; &gt;, boost::signals2::mutex&gt; &gt; &gt;, boost::signals2::detail::connection_body&lt;std::pair&lt;boost::signals2::detail::slot_meta_group, boost::optional&lt;int&gt; &gt;, boost::signals2::slot&lt;void (), boost::function&lt;void ()&gt; &gt;, boost::signals2::mutex&gt; &gt;, boost::signals2::detail::void_type, boost::single_pass_traversal_tag, const boost::signals2::detail::void_type &amp;, long&gt;::operator*' requested here *first; ^ boost/signals2/detail/result_type_wrapper.hpp:64:11: note: in instantiation of function template specialization 'boost::signals2::optional_last_value&lt;void&gt;::operator()&lt;boost::signals2::detail::slot_call_iterator_t&lt;boost::signals2::detail::variadic_slot_invoker&lt;boost::signals2::detail::void_type, &gt;, std::_List_iterator&lt;boost::shared_ptr&lt;boost::signals2::detail::connection_body&lt;std::pair&lt;boost::signals2::detail::slot_meta_group, boost::optional&lt;int&gt; &gt;, boost::signals2::slot&lt;void (), boost::function&lt;void ()&gt; &gt;, boost::signals2::mutex&gt; &gt; &gt;, boost::signals2::detail::connection_body&lt;std::pair&lt;boost::signals2::detail::slot_meta_group, boost::optional&lt;int&gt; &gt;, boost::signals2::slot&lt;void (), boost::function&lt;void ()&gt; &gt;, boost::signals2::mutex&gt; &gt; &gt;' requested here combiner(first, last); ^ boost/signals2/detail/signal_template.hpp:241:18: note: in instantiation of function template specialization 'boost::signals2::detail::combiner_invoker&lt;void&gt;::operator()&lt;boost::signals2::optional_last_value&lt;void&gt;, boost::signals2::detail::slot_call_iterator_t&lt;boost::signals2::detail::variadic_slot_invoker&lt;boost::signals2::detail::void_type, &gt;, std::_List_iterator&lt;boost::shared_ptr&lt;boost::signals2::detail::connection_body&lt;std::pair&lt;boost::signals2::detail::slot_meta_group, boost::optional&lt;int&gt; &gt;, boost::signals2::slot&lt;void (), boost::function&lt;void ()&gt; &gt;, boost::signals2::mutex&gt; &gt; &gt;, boost::signals2::detail::connection_body&lt;std::pair&lt;boost::signals2::detail::slot_meta_group, boost::optional&lt;int&gt; &gt;, boost::signals2::slot&lt;void (), boost::function&lt;void ()&gt; &gt;, boost::signals2::mutex&gt; &gt; &gt;' requested here return detail::combiner_invoker&lt;typename combiner_type::result_type&gt;() ^ boost/signals2/detail/signal_template.hpp:695:16: note: in instantiation of member function 'boost::signals2::detail::signal_impl&lt;void (), boost::signals2::optional_last_value&lt;void&gt;, int, std::less&lt;int&gt;, boost::function&lt;void ()&gt;, boost::function&lt;void (const boost::signals2::connection &amp;)&gt;, boost::signals2::mutex&gt;::operator()' requested here return (*_pimpl)(BOOST_SIGNALS2_SIGNATURE_ARG_NAMES(BOOST_SIGNALS2_NUM_ARGS)); ^ test.cpp:6:6: note: in instantiation of member function 'boost::signals2::signal&lt;void (), boost::signals2::optional_last_value&lt;void&gt;, int, std::less&lt;int&gt;, boost::function&lt;void ()&gt;, boost::function&lt;void (const boost::signals2::connection &amp;)&gt;, boost::signals2::mutex&gt;::operator()' requested here s(); ^ boost/tuple/detail/tuple_basic.hpp:211:1: note: candidate template ignored: could not match cons against tuple get(cons&lt;HT, TT&gt;&amp; c BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(int, N)) { ^ boost/tuple/detail/tuple_basic.hpp:225:1: note: candidate template ignored: could not match cons against tuple get(const cons&lt;HT, TT&gt;&amp; c BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(int, N)) { ^ boost/optional/optional.hpp:773:1: note: candidate template ignored: invalid explicitly-specified argument for template parameter 'T' get ( optional&lt;T&gt; const&amp; opt ) ^ boost/optional/optional.hpp:781:1: note: candidate template ignored: invalid explicitly-specified argument for template parameter 'T' get ( optional&lt;T&gt;&amp; opt ) ^ boost/optional/optional.hpp:791:1: note: candidate template ignored: invalid explicitly-specified argument for template parameter 'T' get ( optional&lt;T&gt; const* opt ) ^ boost/optional/optional.hpp:799:1: note: candidate template ignored: invalid explicitly-specified argument for template parameter 'T' get ( optional&lt;T&gt;* opt ) ^ </pre> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/8260 Trac 1.4.3 Frank Mori Hess Fri, 08 Mar 2013 02:30:19 GMT status changed; resolution set https://svn.boost.org/trac10/ticket/8260#comment:1 https://svn.boost.org/trac10/ticket/8260#comment:1 <ul> <li><strong>status</strong> <span class="trac-field-old">new</span> → <span class="trac-field-new">closed</span> </li> <li><strong>resolution</strong> → <span class="trac-field-new">duplicate</span> </li> </ul> <p> Duplicate of <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/8102" title="#8102: Bugs: signals2 is trying to use std::get with boost::tuple (closed: fixed)">#8102</a> </p> Ticket