【发布时间】:2015-04-26 10:06:40
【问题描述】:
我正在使用以下 lambda,但出现此错误。我不明白为什么编译器不喜欢我正在做的事情。
std::string captchaWord(6, 0);
std::generate(captchaWord.begin(), captchaWord.end(), []() {
unsigned int num = Randomizer('z' - 'a' + 1 + '9' - '0' + 1);
char ch = num + 'a';
if (num >= 'z' - 'a' + 1)
{
ch += '0' - 'z' - 1;
}
return ch;
});
顺便说一下,Randomizer 是一个具有以下签名的函数:
unsigned int Randomizer(unsigned int);
这是我收到的错误消息:
错误 C3499:已指定为具有 void 返回类型的 lambda 无法返回值。
【问题讨论】:
-
消息
lambda that has been specified to have a void return type很清楚。您必须指定返回类型。例如。[]() -> int ... -
您的代码是正确的,并且可以使用g++ 和 VC12 正常编译。请指定您使用的是哪个编译器。
-
你用的是什么编译器?视觉工作室?对我来说,代码编译得很好。 (另见cpp.sh/4hbi)
-
@BetaCarotin 你确实是正确的。我知道这一点,并且使用您的建议确实有效。我试图弄清楚为什么我不得不在这个 lambda 函数中指定如此明显的返回值。
-
@Abhijit 我正在使用 vc 2013
标签: c++ lambda unsatisfiedlinkerror