gpt4 book ai didi

c++ - 函数内部的函数声明是否有用?

转载 作者:IT老高 更新时间:2023-10-28 21:56:13 25 4
gpt4 key购买 nike

我们可以在函数内部声明函数(我想要一个局部变量,但它被解析为函数声明):

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com