1// { dg-do compile }
2// { dg-options "-std=gnu++11" }
3// { dg-require-cstdint "" }
4// { dg-require-gthreads "" }
5// { dg-require-atomic-builtins "" }
6
7// Copyright (C) 2011-2015 Free Software Foundation, Inc.
8//
9// This file is part of the GNU ISO C++ Library.  This library is free
10// software; you can redistribute it and/or modify it under the
11// terms of the GNU General Public License as published by the
12// Free Software Foundation; either version 3, or (at your option)
13// any later version.
14
15// This library is distributed in the hope that it will be useful,
16// but WITHOUT ANY WARRANTY; without even the implied warranty of
17// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18// GNU General Public License for more details.
19
20// You should have received a copy of the GNU General Public License along
21// with this library; see the file COPYING3.  If not see
22// <http://www.gnu.org/licenses/>.
23
24// Test that promise can use a minimal C++11 allocator
25// and doesn't rely on C++98 allocator interface.
26
27#include <future>
28#include <testsuite_allocator.h>
29
30using std::promise;
31using std::allocator_arg;
32using std::tuple;
33
34typedef promise<int>  p;
35typedef promise<int&> pr;
36typedef promise<void> pv;
37__gnu_test::SimpleAllocator<p> a;
38
39tuple<p, pr, pv> t1{ allocator_arg, a };
40tuple<p, pr, pv> t2{ allocator_arg, a, p{}, pr{}, pv{} };
41