遍历std::tuple

来源:互联网 发布:读取身份证照片软件 编辑:程序博客网 时间:2024/05/21 19:37
#include <iostream>#include <tuple>#include <string>#include <type_traits>template<std::size_t N>struct print_hlp {template<class... Args>static void exec(std::tuple<Args...>& t){print_hlp<N-1>::exec(t);std::cout << " , ";using type_t = std::tuple_element<N, std::tuple<Args...> >::type;if (std::is_rvalue_reference<type_t>::value){std::cout << "右值=";}else{std::cout << "左值=";}std::cout << std::get<N>(t);}};template<>struct print_hlp<0> {template<class... Args>static void exec(std::tuple<Args...>& t){using type_t = std::tuple_element<0, std::tuple<Args...> >::type;if (std::is_rvalue_reference<type_t>::value){std::cout << "右值=";}else{std::cout << "左值=";}std::cout << std::get<0>(t);return;}};template<class... Args>void print(std::tuple<Args...>& t){std::cout << "(";print_hlp<sizeof...(Args)-1>::exec(t);std::cout << ")\n";}int main(){int a = 3;auto t = std::forward_as_tuple(1, 2, a);print(t);return 0;}

0 0
原创粉丝点击