lambda函数可以返回指针类型吗?

时间:2016-02-11 16:39:32

标签: c++ c++11 lambda

我在考虑这样的事情:

auto c = []() -> (int*) {int * b; b = new int(); b[0]=2; return b;};

很抱歉,如果cuestion非常愚蠢,但我不确定为什么会产生编译错误:

main.cpp:3:18: error: expected type-specifier before '(' token
 auto c = []() -> (int*) {int * b; b = new int(); b[0]=2; return b;};

2 个答案:

答案 0 :(得分:5)

删除int*周围的括号。你没有声明像(int*) p这样的变量,那么为什么要在括号中输入括号?

这正确编译:

auto c = []()->int* {int * b; b = new int(); b[0]=2; return b;};

答案 1 :(得分:4)

这完全有效(返回类型周围没有()):

#include <iostream>

int main()
{
    auto c = []() -> int* { int *b = new int(); b[0] = 2; return b; };
    std::cout << *c() << std::endl;
}

(没想到delete

Live on Coliru