1*8d4860aaSLouis Dionne //===----------------------------------------------------------------------===//
2*8d4860aaSLouis Dionne //
3*8d4860aaSLouis Dionne // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*8d4860aaSLouis Dionne // See https://llvm.org/LICENSE.txt for license information.
5*8d4860aaSLouis Dionne // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*8d4860aaSLouis Dionne //
7*8d4860aaSLouis Dionne //===----------------------------------------------------------------------===//
8*8d4860aaSLouis Dionne 
9*8d4860aaSLouis Dionne // <functional>
10*8d4860aaSLouis Dionne 
11*8d4860aaSLouis Dionne // UNSUPPORTED: c++03, c++11, c++14
12*8d4860aaSLouis Dionne 
13*8d4860aaSLouis Dionne // class function<R(ArgTypes...)>
14*8d4860aaSLouis Dionne 
15*8d4860aaSLouis Dionne // template<class A> function(allocator_arg_t, const A&, const function&);
16*8d4860aaSLouis Dionne //
17*8d4860aaSLouis Dionne // This signature was removed in C++17
18*8d4860aaSLouis Dionne 
19*8d4860aaSLouis Dionne #include <functional>
20*8d4860aaSLouis Dionne #include <cassert>
21*8d4860aaSLouis Dionne 
22*8d4860aaSLouis Dionne #include "test_macros.h"
23*8d4860aaSLouis Dionne 
main(int,char **)24*8d4860aaSLouis Dionne int main(int, char**)
25*8d4860aaSLouis Dionne {
26*8d4860aaSLouis Dionne     typedef std::function<void(int)> F;
27*8d4860aaSLouis Dionne     F f1;
28*8d4860aaSLouis Dionne     F f2(std::allocator_arg, std::allocator<int>(), f1); // expected-error {{no matching constructor for initialization of}}
29*8d4860aaSLouis Dionne     return 0;
30*8d4860aaSLouis Dionne }
31