This patch fixes llvm.org/PR34298. Previously libc++ incorrectly evaluated the __invokable trait via the converting constructor `function(Tp)` [with Tp = std::function] whenever the copy constructor or copy assignment operator was required. This patch further constrains that constructor to short circut before evaluating the troublesome SFINAE when `Tp` matches std::function. The original patch is from Alex Lorenz. llvm-svn: 312892 |
||
|---|---|---|
| .. | ||
| F.pass.cpp | ||
| F_assign.pass.cpp | ||
| F_incomplete.pass.cpp | ||
| F_nullptr.pass.cpp | ||
| alloc.fail.cpp | ||
| alloc.pass.cpp | ||
| alloc_F.fail.cpp | ||
| alloc_F.pass.cpp | ||
| alloc_function.fail.cpp | ||
| alloc_function.pass.cpp | ||
| alloc_nullptr.fail.cpp | ||
| alloc_nullptr.pass.cpp | ||
| alloc_rfunction.fail.cpp | ||
| alloc_rfunction.pass.cpp | ||
| copy_assign.pass.cpp | ||
| copy_move.pass.cpp | ||
| default.pass.cpp | ||
| nullptr_t.pass.cpp | ||
| nullptr_t_assign.pass.cpp | ||