http://llvm.org/bugs/show_bug.cgi?id=12034

             Bug #: 12034
           Summary: Error for non-destroyable return type of overloaded
                    call hard to understand
           Product: clang
           Version: trunk
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: C++0x
        AssignedTo: [email protected]
        ReportedBy: [email protected]
                CC: [email protected], [email protected]
    Classification: Unclassified


In one of libc++'s tests (at r150835), I got the following error:


In file included from
/home/jyasskin/src/libcxx/src/test/algorithms/alg.sorting/alg.min.max/minmax_comp.pass.cpp:17:
In file included from /home/jyasskin/src/libcxx/src/include/algorithm:591:
/home/jyasskin/src/libcxx/src/include/type_traits:3048:22: error: attempt to
use a deleted
      function
    typedef decltype(swap(_VSTD::declval<_Tp&>(), _VSTD::declval<_Tp&>()))
type;
                     ^
/home/jyasskin/src/libcxx/src/include/type_traits:3056:48: note: in
instantiation of
      template class 'std::__1::__detail::__swappable<const int &>' requested
here
    : public integral_constant<bool, __detail::__swappable<_Tp>::value>
                                               ^
/home/jyasskin/src/libcxx/src/include/type_traits:3077:41: note: in
instantiation of
      template class 'std::__1::__is_swappable<const int &>' requested here
    : public __is_nothrow_swappable_imp<__is_swappable<_Tp>::value, _Tp>
                                        ^
/home/jyasskin/src/libcxx/src/include/utility:336:32: note: in instantiation of
template
      class 'std::__1::__is_nothrow_swappable<const int &>' requested here
    swap(pair& __p) _NOEXCEPT_(__is_nothrow_swappable<first_type>::value &&
                               ^
/home/jyasskin/src/libcxx/src/include/__config:238:34: note: expanded from
macro
      '_NOEXCEPT_'
#  define _NOEXCEPT_(x) noexcept(x)
                                 ^
/home/jyasskin/src/libcxx/src/test/algorithms/alg.sorting/alg.min.max/minmax_comp.pass.cpp:25:39:
note: 
      in instantiation of template class 'std::__1::pair<const int &, const int
&>'
      requested here
    std::pair<const T&, const T&> p = std::minmax(a, b, c);
                                      ^
/home/jyasskin/src/libcxx/src/test/algorithms/alg.sorting/alg.min.max/minmax_comp.pass.cpp:35:5:
note: 
      in instantiation of function template specialization 'test<int,
      std::__1::greater<int> >' requested here
    test(x, y, std::greater<int>(), x, y);
    ^
/home/jyasskin/src/libcxx/src/include/type_traits:832:5: note: function has
been
      explicitly marked deleted here
    ~__nat() = delete;
    ^
1 error generated.



You'll note that __nat is mentioned for the first time in the line at the
bottom saying what function was deleted, and it's not clear why it would matter
since the arguments to swap are "const int &"s. Instead, the initial error
message should include a note saying the overload that was selected (before the
instantiation backtrace).

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs

Reply via email to