0

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

1>...\documents\visual studio 2012\projects...\line.h(21): 错误 C2143: 语法错误:在 ' )' 之前缺少 ' const'

尝试创建以下内容时(它在另一个文件中定义)tokenList也是typedeffor 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 出现在地图声明之后。就我而言,这很愚蠢,但有趣的是,英特尔 C++ 编译器 2013 能够立即检测到语法错误的原因,而 VC++ 却摸不着头脑。

4

1 回答 1

1

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

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

于 2013-04-24T00:09:03.743 回答