我们可以在函数内部声明函数(我想要一个局部变量,但它被解析为函数声明):
struct bvalue;
struct bdict {
bdict(bvalue);
}
struct bvalue {
explict operator bdict() const;
}
struct metainfo {
metainfo(bdict);
}
void foo(bvalue v) {
metainfo mi(bdict(v)); // parses as function declaration
metainfo mi = bdict(v); // workaround
// (this workaround doesn't work in the presence of explicit ctors)
}
唯一的原因是“因为它使解析器更简单”和“因为标准这么说”,还是有一个晦涩的用途?
最佳答案
这确实是一个 C 问题,因为这种行为是直接从 C 继承而来的(尽管由于 最令人头疼的解析,它在 C++ 中受到更多关注)。
我怀疑答案(至少在 C 的上下文中)是,这允许您将函数声明的存在范围精确到需要它们的位置。也许这在 C 的早期很有用。我怀疑有人会再这样做,但为了向后兼容,它不能从语言中删除。
关于c++ - 函数内部的函数声明是否有用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6089452/