diff --git a/src/libs/3rdparty/cplusplus/Parser.cpp b/src/libs/3rdparty/cplusplus/Parser.cpp index 591d227b47d..2a980e1724e 100644 --- a/src/libs/3rdparty/cplusplus/Parser.cpp +++ b/src/libs/3rdparty/cplusplus/Parser.cpp @@ -1946,7 +1946,10 @@ bool Parser::parseParameterDeclaration(ParameterDeclarationAST *&node) parseDeclaratorOrAbstractDeclarator(ast->declarator, decl_specifier_seq); if (LA() == T_EQUAL) { ast->equal_token = consumeToken(); - parseLogicalOrExpression(ast->expression); + if (!_cxx0xEnabled) + parseLogicalOrExpression(ast->expression); + else + parseInitializerClause0x(ast->expression); } node = ast; diff --git a/tests/auto/cplusplus/cxx11/data/braceInitializers.2.cpp b/tests/auto/cplusplus/cxx11/data/braceInitializers.2.cpp index 7b37e3e4d6c..96be7268b9d 100644 --- a/tests/auto/cplusplus/cxx11/data/braceInitializers.2.cpp +++ b/tests/auto/cplusplus/cxx11/data/braceInitializers.2.cpp @@ -2,3 +2,5 @@ class C { C() : _x{12}, _y({12}) {} C(int i) : _x{{{12, 2}, {"foo"}}, {bar}}... {} }; + +void foo(int i = {1, 2, 3});