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