Variadic templates for lambda expressions(lambda 表达式的可变参数模板)
本文介绍了lambda 表达式的可变参数模板的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
使用 g++ 的正确方法是什么:
What's the correct way to do this with g++:
template < typename F >
void g (F f);
template < typename ... A >
void h (A ... a);
template < typename ... A >
void f (A ... a) {
g ([&a] () { h (a...); }); // g++-4.6: error: parameter packs not expanded with »...«
}
推荐答案
我想你也需要在捕获列表中展开pack a
,像这样:
I think you need to expand the pack a
in the capture list as well, like this:
template < typename ... A >
void f (A ... a) {
g ([&, a...] () { h (a...); });
}
这是来自 C++0x 最终委员会草案,第 5.1.2.23 节的相关文本:
Here is the relevant text from the C++0x Final Committee Draft, section 5.1.2.23:
捕获后跟省略号是包扩展(14.5.3).[ 例子:
A capture followed by an ellipsis is a pack expansion (14.5.3). [ Example:
template<class... Args> void f(Args... args) {
auto lm = [&, args...] { return g(args...); }; lm();
}
—结束示例]
这篇关于lambda 表达式的可变参数模板的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:lambda 表达式的可变参数模板
基础教程推荐
猜你喜欢
- C语言 structural body结构体详解用法 2022-12-06
- 详解c# Emit技术 2023-03-25
- C++详细实现完整图书管理功能 2023-04-04
- C++使用easyX库实现三星环绕效果流程详解 2023-06-26
- C/C++编程中const的使用详解 2023-03-26
- C语言基础全局变量与局部变量教程详解 2022-12-31
- C++中的atoi 函数简介 2023-01-05
- 如何C++使用模板特化功能 2023-03-05
- 一文带你了解C++中的字符替换方法 2023-07-20
- C利用语言实现数据结构之队列 2022-11-22