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 |
||
|---|---|---|
| .. | ||
| func.wrap.func.alg | ||
| func.wrap.func.cap | ||
| func.wrap.func.con | ||
| func.wrap.func.inv | ||
| func.wrap.func.mod | ||
| func.wrap.func.nullptr | ||
| func.wrap.func.targ | ||
| derive_from.fail.cpp | ||
| derive_from.pass.cpp | ||
| function_types.h | ||
| types.pass.cpp | ||