1cd2254b454e9398d1287e44630f3ac654cf9f43cHoward Hinnant//===----------------------------------------------------------------------===//
2cd2254b454e9398d1287e44630f3ac654cf9f43cHoward Hinnant//
3cd2254b454e9398d1287e44630f3ac654cf9f43cHoward Hinnant//                     The LLVM Compiler Infrastructure
4cd2254b454e9398d1287e44630f3ac654cf9f43cHoward Hinnant//
5cd2254b454e9398d1287e44630f3ac654cf9f43cHoward Hinnant// This file is dual licensed under the MIT and the University of Illinois Open
6cd2254b454e9398d1287e44630f3ac654cf9f43cHoward Hinnant// Source Licenses. See LICENSE.TXT for details.
7cd2254b454e9398d1287e44630f3ac654cf9f43cHoward Hinnant//
8cd2254b454e9398d1287e44630f3ac654cf9f43cHoward Hinnant//===----------------------------------------------------------------------===//
9cd2254b454e9398d1287e44630f3ac654cf9f43cHoward Hinnant
10cd2254b454e9398d1287e44630f3ac654cf9f43cHoward Hinnant// <tuple>
11cd2254b454e9398d1287e44630f3ac654cf9f43cHoward Hinnant
12cd2254b454e9398d1287e44630f3ac654cf9f43cHoward Hinnant// template <class... Types> class tuple;
13cd2254b454e9398d1287e44630f3ac654cf9f43cHoward Hinnant
14cd2254b454e9398d1287e44630f3ac654cf9f43cHoward Hinnant// template <size_t I, class... Types>
15cd2254b454e9398d1287e44630f3ac654cf9f43cHoward Hinnant//   typename tuple_element<I, tuple<Types...> >::type&&
16cd2254b454e9398d1287e44630f3ac654cf9f43cHoward Hinnant//   get(tuple<Types...>&& t);
17cd2254b454e9398d1287e44630f3ac654cf9f43cHoward Hinnant
18cd2254b454e9398d1287e44630f3ac654cf9f43cHoward Hinnant#include <tuple>
19cd2254b454e9398d1287e44630f3ac654cf9f43cHoward Hinnant#include <memory>
20cd2254b454e9398d1287e44630f3ac654cf9f43cHoward Hinnant#include <cassert>
21cd2254b454e9398d1287e44630f3ac654cf9f43cHoward Hinnant
22cd2254b454e9398d1287e44630f3ac654cf9f43cHoward Hinnantint main()
23cd2254b454e9398d1287e44630f3ac654cf9f43cHoward Hinnant{
24cd2254b454e9398d1287e44630f3ac654cf9f43cHoward Hinnant    {
25cd2254b454e9398d1287e44630f3ac654cf9f43cHoward Hinnant        typedef std::tuple<std::unique_ptr<int> > T;
26cd2254b454e9398d1287e44630f3ac654cf9f43cHoward Hinnant        T t(std::unique_ptr<int>(new int(3)));
27cd2254b454e9398d1287e44630f3ac654cf9f43cHoward Hinnant        std::unique_ptr<int> p = std::get<0>(std::move(t));
28cd2254b454e9398d1287e44630f3ac654cf9f43cHoward Hinnant        assert(*p == 3);
29cd2254b454e9398d1287e44630f3ac654cf9f43cHoward Hinnant    }
30cd2254b454e9398d1287e44630f3ac654cf9f43cHoward Hinnant}
31