1e1eabcdfSLouis Dionne //===----------------------------------------------------------------------===// 2e1eabcdfSLouis Dionne // 3e1eabcdfSLouis Dionne // The LLVM Compiler Infrastructure 4e1eabcdfSLouis Dionne // 5e1eabcdfSLouis Dionne // This file is dual licensed under the MIT and the University of Illinois Open 6e1eabcdfSLouis Dionne // Source Licenses. See LICENSE.TXT for details. 7e1eabcdfSLouis Dionne // 8e1eabcdfSLouis Dionne //===----------------------------------------------------------------------===// 9e1eabcdfSLouis Dionne 10e1eabcdfSLouis Dionne // <functional> 11e1eabcdfSLouis Dionne 12e1eabcdfSLouis Dionne // template<class F> 13e1eabcdfSLouis Dionne // function(F) -> function<see-below>; 14e1eabcdfSLouis Dionne 1531cbe0f2SLouis Dionne // UNSUPPORTED: c++03, c++11, c++14 16e1eabcdfSLouis Dionne 17e1eabcdfSLouis Dionne // The deduction guides for std::function do not handle rvalue-ref qualified 18e1eabcdfSLouis Dionne // call operators and C-style variadics. It also doesn't deduce from nullptr_t. 19e1eabcdfSLouis Dionne // Make sure we stick to the specification. 20e1eabcdfSLouis Dionne 21e1eabcdfSLouis Dionne #include <functional> 22e1eabcdfSLouis Dionne #include <type_traits> 23e1eabcdfSLouis Dionne 24e1eabcdfSLouis Dionne struct R { }; operator ()f025e1eabcdfSLouis Dionnestruct f0 { R operator()() && { return {}; } }; operator ()f126e1eabcdfSLouis Dionnestruct f1 { R operator()(int, ...) { return {}; } }; 27e1eabcdfSLouis Dionne main(int,char **)28*504bc07dSLouis Dionneint main(int, char**) { 29e1eabcdfSLouis Dionne std::function f = f0{}; // expected-error{{no viable constructor or deduction guide for deduction of template arguments of 'function'}} 30e1eabcdfSLouis Dionne std::function g = f1{}; // expected-error{{no viable constructor or deduction guide for deduction of template arguments of 'function'}} 31e1eabcdfSLouis Dionne std::function h = nullptr; // expected-error{{no viable constructor or deduction guide for deduction of template arguments of 'function'}} 32*504bc07dSLouis Dionne return 0; 33e1eabcdfSLouis Dionne } 34