1*902e28deSLouis Dionne //===----------------------------------------------------------------------===// 2*902e28deSLouis Dionne // 3*902e28deSLouis Dionne // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*902e28deSLouis Dionne // See https://llvm.org/LICENSE.txt for license information. 5*902e28deSLouis Dionne // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*902e28deSLouis Dionne // 7*902e28deSLouis Dionne //===----------------------------------------------------------------------===// 8*902e28deSLouis Dionne 9*902e28deSLouis Dionne // UNSUPPORTED: c++03, c++11, c++14 10*902e28deSLouis Dionne 11*902e28deSLouis Dionne // <functional> 12*902e28deSLouis Dionne // 13*902e28deSLouis Dionne // Make sure we can't initialize a std::function using an allocator (http://wg21.link/p0302r1). 14*902e28deSLouis Dionne // These constructors were removed in C++17. 15*902e28deSLouis Dionne 16*902e28deSLouis Dionne #include <functional> 17*902e28deSLouis Dionne #include <memory> 18*902e28deSLouis Dionne 19*902e28deSLouis Dionne struct S : public std::function<void()> { using function::function; }; 20*902e28deSLouis Dionne f()21*902e28deSLouis Dionnevoid f() { 22*902e28deSLouis Dionne S f1( [](){} ); 23*902e28deSLouis Dionne S f2(std::allocator_arg, std::allocator<int>{}, f1); // expected-error {{no matching constructor for initialization of 'S'}} 24*902e28deSLouis Dionne } 25