flx added a comment. In D90042#2391246 <https://reviews.llvm.org/D90042#2391246>, @aaron.ballman wrote:
> In D90042#2390203 <https://reviews.llvm.org/D90042#2390203>, @flx wrote: > >> Thanks for the suggestion, I had never hear of creduce! > > Glad to have introduced you to it -- it's a great tool! > >> After a bit of trial an error I seem to have found a more minimal example: >> >> namespace std { >> >> template <typename> class function; >> >> template <typename a, typename... b> class function<a(b...)> { >> >> public: >> >> void operator()(b...); >> >> }; >> >> } // namespace std >> >> struct c { >> >> c(); >> >> c(const c &); >> >> }; >> >> std::function<void(c &)> f; >> >> void d() { >> >> c Orig; >> >> c Copy = Orig; >> >> f(Copy); >> >> } >> >> >> To be frank I can't spot a meaningful difference to the std::function copy >> we already have. > > Aha, I may have spotted it. The call operators have subtly different > signatures and the signature we have in our test file is wrong. Note the `&&` > in our test file compared to what the standard defines: > http://eel.is/c++draft/func.wrap.func#inv which is what's causing the > difference here: https://godbolt.org/z/hxfM7P Ah! That is subtle and surprising, but makes sense. I confirmed that the new test cases fail now before the fix is put in place. Thanks for your help! Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D90042/new/ https://reviews.llvm.org/D90042 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits