gpt4 book ai didi

c++ - decltype 是如何工作的?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:00:54 24 4
gpt4 key购买 nike

它是否仅在编译时评估?它看起来是什么表达式类型还是它的返回类型并只是替换它? IE。它可以用作宏预处理器替代品吗?另外,如果我这样写:

std::map<std::string, int> m;
decltype(m.cbegin()) i;

它实际上会调用 cbegin 并且我会在这里支付一些性能吗?

编辑:我已经知道我可以写 decltype(m)::const_iterator i;

最佳答案

decltype 严格在编译时工作。因此,您可以将它与取消引用 end 迭代器的代码一起使用,或者使用

decltype(sqrt(-1.))

绝对没有与此相关的运行时惩罚 - 它根本不会被执行。


顺便说一句,关于您的评论:

您应该将 decltype 与返回某个值的表达式一起使用。有点讽刺的是,decltype(m)::const_iterator i; 不是一个返回值的表达式 - 它是一个值的定义

关于c++ - decltype 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35146096/

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