C++14 make code cleaner

在C++11中我们如果要写一个通过tuple实现函数调用的函数要这样写:

在C++14中MakeIndexes和IndexTuple已经由utility库提供了,我们可以写得更简洁了,两个函数就可以了。

这样写更省心啦o(∩_∩)o 。

根据元素类型获取tuple中的元素

最近做cinatra遇到这样的需求,根据一个type来获取对应的第一个元素,需要注意的一个问题是,如果没有这个类型的时候,通过编译期断言提醒使用者,实现代码如下:

1.C++14实现

2.C++11的实现方法

把enum换成const int也没问题,如果完全用C++11的方式去做那就用std::integral_constant吧,代码如下:

注意,integral_constant方式,加断言不起作用,不过会返回一个无效的-1,在外层也会出现断言提示,问题不大。

测试代码:

 

Copy Protected by Chetan's WP-Copyprotect.