std :: max with lambda和auto

时间:2014-02-21 20:38:04

标签: c++ c++11 lambda auto

C ++ 11不可能实现这一点吗? 使用当前的clang编译器(OS X 10.8上的Xcode 5),它无法编译:

std::max_element(group->GetComponents().begin(), group->GetComponents().end(),
                 [](auto a, auto b) { return a.length > b.length; });

错误消息是: Stuff.cp:68:40:函数原型中不允许'auto'

1 个答案:

答案 0 :(得分:1)

在C ++中你有一般的lambdas,所以语法将在clang 3.5中编译。 lambda将如下所示:

class /* unnamed */
{
public:
    template<typename T>
    T operator () (T a) const { return a; }
};