相关疑难解决方法(0)

如何编写一个替换链式方法调用的可变方法?

我正在研究一个名为group_bySQL同名模型的递归映射类.

例如,GB是一个group_by将存储指向对象foo分组通过std::string,int以及char密钥类型,在这个顺序.

group_by<foo,std::string,int,char>  gb;
Run Code Online (Sandbox Code Playgroud)

group_by提供了一种at( I const& key )存取方法,可用于查看当前的水平图.链接at()调用以检索更深层的地图工作正常.

auto& v = gb.at( k1 ).at( k2 ).at( k3 ).get_vec();
Run Code Online (Sandbox Code Playgroud)

问题

我想创建一个at()被调用的替代方法,at_variadic( Args const& ...args )它可以在一次调用中检索更深层的地图,而无需链接.

auto& w = gb.at_variadic( k1, k2 );
auto& x = gb.at_variadic( k1, k2, k3 );
Run Code Online (Sandbox Code Playgroud)

但是,我遇到了一些问题.首先,我不知道如何指定返回类型,因为它取决于可变参数.也许用decltype(),不知何故?

工作答案

Ecatmur在下面的回答概述了一个很好的方法.

我不得不玩终端案例group_by<>以使编译器满意,但下面的代码,很大程度上基于Ecatmur的答案,似乎与gcc 4.7.2一起正常工作.

#include <cassert>
#include <map>
#include <vector>
#include <iostream>

template< …
Run Code Online (Sandbox Code Playgroud)

c++ templates variadic-functions c++11

7
推荐指数
1
解决办法
371
查看次数

标签 统计

c++ ×1

c++11 ×1

templates ×1

variadic-functions ×1