// 头文件 <tuple>template< std::size_t I,class... Types >typenamestd::tuple_element<I, tuple<Types...>>::type&get( tuple<Types...>& t )noexcept;(1)(since C++11)(constexpr since C++14)template< std::size_t I,class... Types >typenamestd::tuple_element<I, tuple<Types...>>::type&&get( tuple<Types...>&& t )noexcept;(2)(since C++11)(constexpr since C++14)template< std::size_t I,class... Types >typenamestd::tuple_element<I, tuple<Types...>>::type const&get(const tuple<Types...>& t )noexcept;(3)(since C++11)(constexpr since C++14)template< std::size_t I,class... Types >typenamestd::tuple_element<I, tuple<Types...>>::type const&&get(const tuple<Types...>&& t )noexcept;(4)(since C++11)(constexpr since C++14)template<classT,class... Types >constexpr T&get(tuple<Types...>& t)noexcept;(5)(since C++14)template<classT,class... Types >constexpr T&&get(tuple<Types...>&& t)noexcept;(6)(since C++14)template<classT,class... Types >constexprconst T&get(const tuple<Types...>& t)noexcept;(7)(since C++14)template<classT,class... Types >constexprconst T&&get(const tuple<Types...>&& t)noexcept;(8)(since C++14)
1-4通过索引获取元素,5-8通过元素类型获取元素,特别注意,如果该类型的元素不唯一,将获取失败。
例子
#include<iostream>#include<tuple>#include<string>intmain(){
std::tuple<int,int> t1{1,1};
std::cout <<"t1 is {"<< std::get<0>(t1)<<", "<< std::get<1>(t1)<<"}"<< std::endl;
std::tuple<int, std::string> t2{1,"hello world"};
std::cout <<"t2 is {"<< std::get<int>(t2)<<", "<< std::get<std::string>(t2)<<"}"<< std::endl;
std::tuple<int,int> t3{1,1};// error: static_assert failed due to requirement 'value != __ambiguous' // "type occurs more than once in type list"// std::cout << "t3 is {" << std::get<int>(t3);return0;}