运行期以索引获取tuple元素-C++17
//运行期以索引获取tuple元素-C++17
//需支持C++17及以上标准的编译器,VS2017 15.5.x、CodeBlocks 16.01 gcc 7.2
//参见:http://purecpp.org/?p=1581
#include <iostream>
#include <tuple>
using namespace std;
template <size_t Idx, typename T>
void visit(T& tup, size_t i)
{
    if (i == Idx)
        cout << get<Idx>(tup) << endl;
}
//template <typename Tuple, size_t... Idx>
//void visit(size_t i, Tuple& tp, index_sequence<Idx...>)
//{
//    (visit<Idx>(tp, i), ...);
//}
template <class Tuple, size_t...Idx>
void visit1(size_t i, Tuple& tp, index_sequence<Idx...>)
{
    ((i == Idx && (visit<Idx>(tp, i), false)), ...);
}
template <typename Tuple>
void visit_help(size_t i, Tuple& tp)
{
    //visit(i, tp, make_index_sequence<tuple_size<Tuple>::value>{});
    visit1(i, tp, make_index_sequence<tuple_size<Tuple>::value>{});
}
int main()
{
    auto tp = make_tuple(, "The test", true);
    ;
    visit_help(i, tp);  //The test
    ;
}
运行期以索引获取tuple元素-C++17的更多相关文章
- 运行期以索引获取tuple元素-C++14
		
在编译期很容易根据索引来获取对应位置的元素,因为 tuple 的帮助函数 std::get<N>(tp) 就能获取 tuple 中第 N 个元素.然而我们却不能直接在运行期通过变量来获取 ...
 - 运行期以索引获取tuple元素-C++11之2
		
//运行期以索引获取tuple元素-C++11之2 //需支持C++11及以上标准的编译器,VS2017 15.5.x.CodeBlocks 16.01 gcc 7.2 //参见<深入应用C++ ...
 - 运行期以索引获取tuple元素-C++11之1
		
//运行期以索引获取tuple元素-C++11之1 //需支持C++11及以上标准的编译器,VS2017 15.5.x.CodeBlocks 16.01 gcc 7.2 //参见<深入应用C++ ...
 - 运行期以索引获取tuple元素-C++14(原创)
		
在编译期很容易根据索引来获取对应位置的元素,因为 tuple 的帮助函数 std::get<N>(tp) 就能获取 tuple 中第 N 个元素.然而我们却不能直接在运行期通过变量来获取 ...
 - Knockout获取数组元素索引的2种方法,在MVC中实现
		
原文:Knockout获取数组元素索引的2种方法,在MVC中实现 在遍历数组.集合的时候,通常要获取元素的索引,本篇体验使用Knockout获取索引的2种方法. 假设有这样的一个模型: namespa ...
 - 获取某个元素第一次出现在数组(json数组)的索引
		
function firstIndex(arr, text) { // 若元素不存在在数组中返回-1 let firstVal = -1; for (let i = 0; i < arr.len ...
 - python中len 小练习:获取并输出集合中的索引及对应元素
		
len()用来获取长度.字节等数值 1 a = ["hello", "world", "dlrb"] 2 b = len(a) 3 for ...
 - jquery通过索引获取元素
		
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
 - JIT晚期(运行期)
		
在部分的商用虚拟机(Sun HotSpot.IBM J9)中,Java程序最初是通过解释器(Interpreter)进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这些代码认定为& ...
 
随机推荐
- JAVANIO通道
			
package com.nio.test; import java.io.FileInputStream; import java.io.FileNotFoundException; import j ...
 - c++学习笔记---06--- 函数的重载
			
函数的重载 函数的重载 C++ 里的函数重载(overloading)机制比我们此前见到的东西都高深,这种语言的灵活性和强大功能在它身上体现得淋漓尽致. 所谓函数重载的实质就是用同样的名字再定义一个有 ...
 - display:none和visibility:hidden区别
			
<!-- display:none和visible:hidden都能把网页上某个元素隐藏起来,但两者有区别: --> <!-- display:none 不为被隐藏的对象保留其物理空 ...
 - CSS与JS中的相对路径引用
			
javascript和css文件中采用相对路径,其基准路径是完全不同的. 1.javascript引用资源(比如图片)相对路径是以宿主路径(被引用的网页比如你在首页index.php引用了某js文件, ...
 - Java多线程Future模式
			
Java多线程Future模式有些类似于Ajax的异步请求Future模式的核心在于:去除了主函数的等待时间,并使得原本需要等待的时间段可以用于处理其他业务逻辑 假设服务器的处理某个业务,该业务可以分 ...
 - [J2EE] 有关 PreparedStatement
			
今天同事遇到一个问题,简言之,就是PreparedStatement的预编译究竟是怎么发挥作用的... 嘿嘿,说来惭愧,我以前就只知道PreparedStatement比Statement要好,要防S ...
 - 2017阿里云双11-云服务器ECS优惠活动最强解读和购买指南
			
本站之前介绍了<爆款云服务器,限时2折起>,这其实是阿里云双11之前的预热活动:四款低配的机型,二折给用户(每个用户限购一台),非常的实惠,有很多阅读了本站文章的用户都一次性购买了三年的. ...
 - Grafana+Prometheus系统监控之MySql
			
架构 grafana和prometheus之前安装配置过,见:Grafana+Prometheus打造全方位立体监控系统 MySql安装 MySql的地位和重要性就不言而喻了,作为开源产品深受广大中小 ...
 - Getting Started With setuptools and setup.py
			
https://pythonhosted.org/an_example_pypi_project/setuptools.html http://www.ianbicking.org/docs/setu ...
 - [转]Oracle 重建索引的必要性
			
http://blog.csdn.net/leshami/article/details/23763963 索引重建是一个争论不休被不断热烈讨论的议题.当然Oracle官方也有自己的观点,我们很多DB ...