Gui*_*lem 2 c++ variadic-functions variadic-templates c++11
我的问题如下:我有一个声明为这样的类:
template<typename ReturnType, typename... Args>
class API
{
ReturnType operator()(Args... args)
{
// Get argument 0
// Get argument 1
}
};
Run Code Online (Sandbox Code Playgroud)
我需要通过一个来获取参数,到目前为止我唯一的方法(但我无法让它工作)正在使用std::get,如下:
std::get<0>(args);
Run Code Online (Sandbox Code Playgroud)
当然,这会导致很多错误.我是variadic模板的新手(根本不是C++ 11),所以我在这一点上很失落.
我怎么能逐一得到这些论点?任何帮助将不胜感激.
在临时元组中捕获args(Live in Coliru):
ReturnType operator()(Args... args)
{
static_assert(sizeof...(args) >= 3, "Uh-oh, too few args.");
// Capture args in a tuple
auto&& t = std::forward_as_tuple(args...);
// Get argument 0
std::cout << std::get<0>(t) << '\n';
// Get argument 1
std::cout << std::get<1>(t) << '\n';
// Get argument 2
std::cout << std::get<2>(t) << '\n';
}
Run Code Online (Sandbox Code Playgroud)
std::forward_as_tuple使用完美转发来捕获对引用的引用args,因此不应该进行复制.
| 归档时间: |
|
| 查看次数: |
1252 次 |
| 最近记录: |