为什么C ++'Standard'不支持另一个函数内的函数定义?

时间:2016-10-20 10:07:36

标签: c++ c++11

我搜索了google / stack overflow等,但我找不到合适/准确的解决方案。我知道最新的C ++版本支持我们可以实现的Lambda函数,而且我知道我们应该避免在另一个函数中定义一个函数。但我很好奇为什么我们不能根据C ++标准在函数内部有函数定义?。

如下:

int print() {
   void test(){
     // statements
   }
}

我知道人们会将此标记为重复,但在这些问题中,没有人给出令人满意的答案,这是我在这里提出的要点。

2 个答案:

答案 0 :(得分:0)

我现在记得你可以在前c ++ 11天里仿效它:

foo

甚至可以将其作为bar内的回调传递。但是你应该注意到这里没有关闭。您无法在 SELECT COUNT(1), orgName FROM SIGHTING INNER JOIN SPOTTER USING (spotterId) INNER JOIN ORG USING (orgId) GROUP BY orgName 中访问{{1}}的变量。

答案 1 :(得分:-2)

非常确定你可以:

int main() {
    auto curry = [] (auto f) {
        return [=] (auto x) {
            return [=] (auto y) {
                return f(x, y);
            };
        };
    };
}