<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><br><div><div>On May 28, 2014, at 9:30 AM, İsmail Dönmez <<a href="mailto:ismail@donmez.ws">ismail@donmez.ws</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><p dir="ltr">Awesome! Sorry for the duplicate report.</p><div><br></div></blockquote>No worries. Still working on it.</div><div><br></div><div>— Marshall</div><div><br></div><div><br><blockquote type="cite">
<div class="gmail_quote">On May 28, 2014 7:10 PM, "Justin Bogner" <<a href="mailto:mail@justinbogner.com">mail@justinbogner.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; position: static; z-index: auto;">
This started with r208825. Richard says it's a bug in libc++:<br>
<br>
  <a href="http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20140519/106091.html" target="_blank">http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20140519/106091.html</a><br>
<br>
and I believe Marshall is looking into it:<br>
<br>
  <a href="http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20140526/106341.html" target="_blank">http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20140526/106341.html</a><br>
<br>
İsmail Dönmez <<a href="mailto:ismail@donmez.ws">ismail@donmez.ws</a>> writes:<br>
> Hi,<br>
><br>
> With clang trunk I see a lot of compile failures in libcxx tests looking like<br>
> this:<br>
><br>
> In file included from invoke_lvalue.pass.cpp:19:<br>
>  In file included from /home/abuild/rpmbuild/BUILD/libcxx/include/<br>
> functional:474:<br>
>  /home/abuild/rpmbuild/BUILD/libcxx/include/type_traits:438:83: error: no<br>
> matching function for call to '__source'<br>
>      : public integral_constant<bool, sizeof(__libcpp_is_function_imp::__test<br>
> <_Tp>(__libcpp_is_function_imp::__source<_Tp>())) == 1><br>
>                                                                              <br>
>      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
>  /home/abuild/rpmbuild/BUILD/libcxx/include/type_traits:443:14: note: in<br>
> instantiation of template class 'std::__1::__libcpp_is_function<void () const,<br>
> false>' requested here<br>
>      : public __libcpp_is_function<_Tp> {};<br>
>               ^<br>
>  /home/abuild/rpmbuild/BUILD/libcxx/include/type_traits:448:97: note: in<br>
> instantiation of template class 'std::__1::is_function<void () const>'<br>
> requested here<br>
>  template <class _Tp, class _Up> struct __libcpp_is_member_function_pointer<br>
> <_Tp _Up::*> : public is_function<_Tp> {};<br>
>                                                                              <br>
>                    ^<br>
>  /home/abuild/rpmbuild/BUILD/libcxx/include/type_traits:451:14: note: in<br>
> instantiation of template class 'std::__1::__libcpp_is_member_function_pointer<br>
> <void (A_void_1::*)() const>' requested here<br>
>      : public __libcpp_is_member_function_pointer<typename remove_cv<br>
> <_Tp>::type> {};<br>
>               ^<br>
>  /home/abuild/rpmbuild/BUILD/libcxx/include/type_traits:465:38: note: in<br>
> instantiation of template class 'std::__1::is_member_function_pointer<void<br>
> (A_void_1::*)() const>' requested here<br>
>                                      !is_member_function_pointer<_Tp>::value><br>
> {};<br>
>                                       ^<br>
>  /home/abuild/rpmbuild/BUILD/libcxx/include/type_traits:3162:17: note: in<br>
> instantiation of template class 'std::__1::is_member_object_pointer<void<br>
> (A_void_1::*)() const>' requested here<br>
>                  is_member_object_pointer<typename remove_reference<br>
> <_Fp>::type>::value &&<br>
>                  ^<br>
>  /home/abuild/rpmbuild/BUILD/libcxx/include/type_traits:3169:1: note:<br>
> (skipping 2 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see<br>
> all)<br>
>  __invoke(_Fp&& __f, _A0&& __a0)<br>
>  ^<br>
>  /home/abuild/rpmbuild/BUILD/libcxx/include/type_traits:3195:11: note: in<br>
> instantiation of template class 'std::__1::__invokable_imp<void (A_void_1::*)<br>
> () const, A_void_1 &>' requested here<br>
>            __invokable_imp<_Fp, _Args...>::value><br>
>            ^<br>
>  /home/abuild/rpmbuild/BUILD/libcxx/include/functional:1974:31: note: in<br>
> instantiation of template class 'std::__1::__invokable<void (A_void_1::*)()<br>
> const, A_void_1 &>' requested here<br>
>      static const bool value = __invokable<_Fp,<br>
>                                ^<br>
>  /home/abuild/rpmbuild/BUILD/libcxx/include/functional:1986:18: note: in<br>
> instantiation of template class 'std::__1::_is_valid_bind_return<void<br>
> (A_void_1::*)() const, std::__1::tuple<std::__1::placeholders::__ph<1> >,<br>
> std::__1::tuple<A_void_1 &> >' requested here<br>
>            bool = _is_valid_bind_return<_Fp, _BoundArgs, _TupleUj>::value><br>
>                   ^<br>
>  /home/abuild/rpmbuild/BUILD/libcxx/include/functional:2083:18: note: in<br>
> instantiation of default argument for '__bind_return<void (A_void_1::*)()<br>
> const, std::__1::tuple<std::__1::placeholders::__ph<1> >, std::__1::tuple<br>
> <A_void_1 &> >' required here<br>
>          typename __bind_return<_Fd, _Td, tuple<_Args&&...> >::type<br>
>                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
>  invoke_lvalue.pass.cpp:117:22: note: while substituting deduced template<br>
> arguments into function template 'operator()' [with _Args = <A_void_1 &>]<br>
>      std::bind(fp, _1)(a);<br>
>                       ^<br>
>  /home/abuild/rpmbuild/BUILD/libcxx/include/type_traits:429:28: note:<br>
> candidate template ignored: substitution failure [with _Tp = void () const]:<br>
> reference to function type 'void () const' cannot have 'const' qualifier<br>
>  template <class _Tp> _Tp&  __source();<br>
>                       ~~~   ^<br>
>  invoke_lvalue.pass.cpp:117:5: error: no matching function for call to object<br>
> of type '__bind<void (A_void_1::*&)() const, std::__1::placeholders::__ph<1><br>
> &>'<br>
>      std::bind(fp, _1)(a);<br>
>      ^~~~~~~~~~~~~~~~~<br>
>  /home/abuild/rpmbuild/BUILD/libcxx/include/functional:2084:9: note: candidate<br>
> template ignored: substitution failure [with _Args = <A_void_1 &>]: implicit<br>
> instantiation of undefined template 'std::__1::__bind_return<void<br>
> (A_void_1::*)() const, std::__1::tuple<std::__1::placeholders::__ph<1> >,<br>
> std::__1::tuple<A_void_1 &>, false>'<br>
>          operator()(_Args&& ...__args)<br>
>          ^<br>
>  /home/abuild/rpmbuild/BUILD/libcxx/include/functional:2093:9: note: candidate<br>
> template ignored: substitution failure [with _Args = <A_void_1 &>]: implicit<br>
> instantiation of undefined template 'std::__1::__bind_return<void<br>
> (A_void_1::*const)() const, const std::__1::tuple<std::__1::placeholders::__ph<br>
> <1> >, std::__1::tuple<A_void_1 &>, false>'<br>
>          operator()(_Args&& ...__args) const<br>
>          ^<br>
>  invoke_lvalue.pass.cpp:121:5: error: no matching function for call to object<br>
> of type '__bind<void (A_void_1::*&)() const, std::__1::placeholders::__ph<1><br>
> &>'<br>
>      std::bind(fp, _1)(ap);<br>
>      ^~~~~~~~~~~~~~~~~<br>
>  /home/abuild/rpmbuild/BUILD/libcxx/include/functional:2084:9: note: candidate<br>
> template ignored: substitution failure [with _Args = <A_void_1 *&>]: implicit<br>
> instantiation of undefined template 'std::__1::__bind_return<void<br>
> (A_void_1::*)() const, std::__1::tuple<std::__1::placeholders::__ph<1> >,<br>
> std::__1::tuple<A_void_1 *&>, false>'<br>
>          operator()(_Args&& ...__args)<br>
>          ^<br>
>  /home/abuild/rpmbuild/BUILD/libcxx/include/functional:2093:9: note: candidate<br>
> template ignored: substitution failure [with _Args = <A_void_1 *&>]: implicit<br>
> instantiation of undefined template 'std::__1::__bind_return<void<br>
> (A_void_1::*const)() const, const std::__1::tuple<std::__1::placeholders::__ph<br>
> <1> >, std::__1::tuple<A_void_1 *&>, false>'<br>
>          operator()(_Args&& ...__args) const<br>
>          ^<br>
>  invoke_lvalue.pass.cpp:128:5: error: no matching function for call to object<br>
> of type '__bind<void (A_void_1::*&)() const, A_void_1 &>'<br>
>      std::bind(fp, a)();<br>
>      ^~~~~~~~~~~~~~~~<br>
>  /home/abuild/rpmbuild/BUILD/libcxx/include/functional:2084:9: note: candidate<br>
> template ignored: substitution failure [with _Args = <>]: implicit<br>
> instantiation of undefined template 'std::__1::__bind_return<void<br>
> (A_void_1::*)() const, std::__1::tuple<A_void_1>, std::__1::tuple<>, false>'<br>
>          operator()(_Args&& ...__args)<br>
>          ^<br>
>  /home/abuild/rpmbuild/BUILD/libcxx/include/functional:2093:9: note: candidate<br>
> template ignored: substitution failure [with _Args = <>]: implicit<br>
> instantiation of undefined template 'std::__1::__bind_return<void<br>
> (A_void_1::*const)() const, const std::__1::tuple<A_void_1>, std::__1::tuple<br>
> <>, false>'<br>
>          operator()(_Args&& ...__args) const<br>
>          ^<br>
>  invoke_lvalue.pass.cpp:132:5: error: no matching function for call to object<br>
> of type '__bind<void (A_void_1::*&)() const, A_void_1 *&>'<br>
>      std::bind(fp, ap)();<br>
>      ^~~~~~~~~~~~~~~~~<br>
>  /home/abuild/rpmbuild/BUILD/libcxx/include/functional:2084:9: note: candidate<br>
> template ignored: substitution failure [with _Args = <>]: implicit<br>
> instantiation of undefined template 'std::__1::__bind_return<void<br>
> (A_void_1::*)() const, std::__1::tuple<A_void_1 *>, std::__1::tuple<>, false>'<br>
>          operator()(_Args&& ...__args)<br>
>          ^<br>
>  /home/abuild/rpmbuild/BUILD/libcxx/include/functional:2093:9: note: candidate<br>
> template ignored: substitution failure [with _Args = <>]: implicit<br>
> instantiation of undefined template 'std::__1::__bind_return<void<br>
> (A_void_1::*const)() const, const std::__1::tuple<A_void_1 *>, std::__1::tuple<br>
> <>, false>'<br>
>          operator()(_Args&& ...__args) const<br>
>          ^<br>
><br>
> Since the tests are not really changed, could this be a clang regression?<br>
><br>
> _______________________________________________<br>
> cfe-dev mailing list<br>
> <a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
</blockquote></div>
</blockquote></div><br></body></html>