c++ - 从字符串到函数的映射中存在语法错误

标签 c++ function dictionary visual-studio-2012 lambda

我在 Visual Studio 2012 中遇到以下语法错误:

1>...\documents\visual studio 2012\projects...\line.h(21): error C2143: syntax error : missing ')' before 'const'

当尝试创建以下内容时(它在另一个文件中定义)也是 tokenListtypedef对于 std::vector<std::string> :

extern std::map<std::string,std::function<std::string (const tokenList& tokens)>> evaluateOperator; //<-- This is the line with the error

我希望在其中执行以下操作:

evaluateOperator["="] = [](const tokenList& tokens) -> std::string
{
    std::string temp("");
            ...
};

我做错了什么? (我对 C++11 很陌生)。我也很感激关于如何从整体上解决问题的任何建议,即根据输入字符串在字符串列表上应用一个函数。谢谢。

编辑:这就是 SSCE 如此重要的原因 - 我已将错误的来源(在使用 ICC2013 之后)定位为错误的代码顺序 - typedef 在 map 声明之后出现。对我来说很愚蠢,但有趣的是,英特尔 C++ 编译器 2013 能够立即检测到语法错误的原因,而 VC++ 却摸不着头脑。

最佳答案

您声称发生错误的行与 C++11 独有的语法属性几乎没有关系。除了 std::function,但如果您的编译器不支持它,它不会表示编译失败并出现语法错误。

也许错误来自它下面的代码。我认为 VS 目前还不支持 lambda,这可能是错误的根源。请注意,您的代码在 GCC 中编译得很好.

关于c++ - 从字符串到函数的映射中存在语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16180969/

相关文章:

C++ 字符串,测试 [0] 是否为空格,问题

python - 处理 dict 中的 keyerror 的最佳方法

嵌套在模板类中的 C++ 类

c++ - 如何将函数指针转换为函数名?

c++ - 我不应该在线程过程中使用 _endthreadex() 来展开堆栈吗?

C 在函数中比较数组元素

c++ - Friend 模板函数(在非模板类中),C++

java - 代码气味 : Make this anonymous inner class a lambda

python - 比较 python 字典列表与列顺序的公差

java - 如果我尝试将值放入 View 类中的 map 中,为什么会出现错误?