xref: /llvm-project/libcxx/test/std/utilities/tuple/tuple.tuple/tuple.elem/get_rv.pass.cpp (revision 31cbe0f240f660f15602c96b787c58a26f17e179)
15a83710eSEric Fiselier //===----------------------------------------------------------------------===//
25a83710eSEric Fiselier //
357b08b09SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
457b08b09SChandler Carruth // See https://llvm.org/LICENSE.txt for license information.
557b08b09SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
65a83710eSEric Fiselier //
75a83710eSEric Fiselier //===----------------------------------------------------------------------===//
85a83710eSEric Fiselier 
95a83710eSEric Fiselier // <tuple>
105a83710eSEric Fiselier 
115a83710eSEric Fiselier // template <class... Types> class tuple;
125a83710eSEric Fiselier 
135a83710eSEric Fiselier // template <size_t I, class... Types>
145a83710eSEric Fiselier //   typename tuple_element<I, tuple<Types...> >::type&&
155a83710eSEric Fiselier //   get(tuple<Types...>&& t);
165a83710eSEric Fiselier 
17*31cbe0f2SLouis Dionne // UNSUPPORTED: c++03
180a52cd79SEric Fiselier 
195a83710eSEric Fiselier #include <tuple>
20e21582e7SMarshall Clow #include <utility>
215a83710eSEric Fiselier #include <memory>
225a83710eSEric Fiselier #include <cassert>
235a83710eSEric Fiselier 
247fc6a556SMarshall Clow #include "test_macros.h"
257fc6a556SMarshall Clow 
main(int,char **)262df59c50SJF Bastien int main(int, char**)
275a83710eSEric Fiselier {
285a83710eSEric Fiselier     {
295a83710eSEric Fiselier         typedef std::tuple<std::unique_ptr<int> > T;
305a83710eSEric Fiselier         T t(std::unique_ptr<int>(new int(3)));
315a83710eSEric Fiselier         std::unique_ptr<int> p = std::get<0>(std::move(t));
325a83710eSEric Fiselier         assert(*p == 3);
335a83710eSEric Fiselier     }
342df59c50SJF Bastien 
352df59c50SJF Bastien   return 0;
365a83710eSEric Fiselier }
37