17ec46bc4228ae1c23a34220d8c6885356d18918cMarshall Clow//===----------------------------------------------------------------------===//
27ec46bc4228ae1c23a34220d8c6885356d18918cMarshall Clow//
37ec46bc4228ae1c23a34220d8c6885356d18918cMarshall Clow//                     The LLVM Compiler Infrastructure
47ec46bc4228ae1c23a34220d8c6885356d18918cMarshall Clow//
57ec46bc4228ae1c23a34220d8c6885356d18918cMarshall Clow// This file is dual licensed under the MIT and the University of Illinois Open
67ec46bc4228ae1c23a34220d8c6885356d18918cMarshall Clow// Source Licenses. See LICENSE.TXT for details.
77ec46bc4228ae1c23a34220d8c6885356d18918cMarshall Clow//
87ec46bc4228ae1c23a34220d8c6885356d18918cMarshall Clow//===----------------------------------------------------------------------===//
97ec46bc4228ae1c23a34220d8c6885356d18918cMarshall Clow
107ec46bc4228ae1c23a34220d8c6885356d18918cMarshall Clow// <utility>
117ec46bc4228ae1c23a34220d8c6885356d18918cMarshall Clow
127ec46bc4228ae1c23a34220d8c6885356d18918cMarshall Clow// template<class T, T N>
137ec46bc4228ae1c23a34220d8c6885356d18918cMarshall Clow//   using make_integer_sequence = integer_sequence<T, 0, 1, ..., N-1>;
147ec46bc4228ae1c23a34220d8c6885356d18918cMarshall Clow
15ee226c05af9e0187098f43fb71465a581487af9bDan Austin// UNSUPPORTED: c++98, c++03, c++11
16ee226c05af9e0187098f43fb71465a581487af9bDan Austin
177ec46bc4228ae1c23a34220d8c6885356d18918cMarshall Clow#include <utility>
187ec46bc4228ae1c23a34220d8c6885356d18918cMarshall Clow#include <type_traits>
197ec46bc4228ae1c23a34220d8c6885356d18918cMarshall Clow#include <cassert>
207ec46bc4228ae1c23a34220d8c6885356d18918cMarshall Clow
217ec46bc4228ae1c23a34220d8c6885356d18918cMarshall Clowint main()
227ec46bc4228ae1c23a34220d8c6885356d18918cMarshall Clow{
237ec46bc4228ae1c23a34220d8c6885356d18918cMarshall Clow    static_assert(std::is_same<std::make_integer_sequence<int, 0>, std::integer_sequence<int>>::value, "");
247ec46bc4228ae1c23a34220d8c6885356d18918cMarshall Clow    static_assert(std::is_same<std::make_integer_sequence<int, 1>, std::integer_sequence<int, 0>>::value, "");
257ec46bc4228ae1c23a34220d8c6885356d18918cMarshall Clow    static_assert(std::is_same<std::make_integer_sequence<int, 2>, std::integer_sequence<int, 0, 1>>::value, "");
267ec46bc4228ae1c23a34220d8c6885356d18918cMarshall Clow    static_assert(std::is_same<std::make_integer_sequence<int, 3>, std::integer_sequence<int, 0, 1, 2>>::value, "");
277ec46bc4228ae1c23a34220d8c6885356d18918cMarshall Clow
287ec46bc4228ae1c23a34220d8c6885356d18918cMarshall Clow    static_assert(std::is_same<std::make_integer_sequence<unsigned long long, 0>, std::integer_sequence<unsigned long long>>::value, "");
297ec46bc4228ae1c23a34220d8c6885356d18918cMarshall Clow    static_assert(std::is_same<std::make_integer_sequence<unsigned long long, 1>, std::integer_sequence<unsigned long long, 0>>::value, "");
307ec46bc4228ae1c23a34220d8c6885356d18918cMarshall Clow    static_assert(std::is_same<std::make_integer_sequence<unsigned long long, 2>, std::integer_sequence<unsigned long long, 0, 1>>::value, "");
317ec46bc4228ae1c23a34220d8c6885356d18918cMarshall Clow    static_assert(std::is_same<std::make_integer_sequence<unsigned long long, 3>, std::integer_sequence<unsigned long long, 0, 1, 2>>::value, "");
327ec46bc4228ae1c23a34220d8c6885356d18918cMarshall Clow}
33