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 F, class A> function(allocator_arg_t, const A&, F);
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 
foo(int)24*8d4860aaSLouis Dionne void foo(int) {}
25*8d4860aaSLouis Dionne 
main(int,char **)26*8d4860aaSLouis Dionne int main(int, char**)
27*8d4860aaSLouis Dionne {
28*8d4860aaSLouis Dionne     std::function<void(int)> f(std::allocator_arg, std::allocator<int>(), foo); // expected-error {{no matching constructor for initialization of}}
29*8d4860aaSLouis Dionne     return 0;
30*8d4860aaSLouis Dionne }
31