【发布时间】:2011-04-13 09:26:15
【问题描述】:
#include <iostream>
#include <algorithm>
#include <array>
using namespace std;
template<class T>
void func(T beg, T end)
{
typedef decltype(*beg) type;
std::for_each(beg, end, [](type t) { cout << t << endl; });
}
int main()
{
std::array<int, 4> arr = { 1,2,3,4 };
func(arr.begin(), arr.end());
return 0;
}
decltype 告诉 lambda 表达式要使用什么类型时要走的路吗?
【问题讨论】:
-
您遇到的错误是什么。这里运行良好:ideone.com/zI3iL
-
它没有错误,我只是想知道当使用带有模板的 lambda 时,decltype 是告诉 lambda 模板类型的唯一方法,是正确的编码方式吗?
标签: c++ templates c++11 lambda