gpt4 book ai didi

c++ - 奇怪的 C++ 语法和 decltype

转载 作者:行者123 更新时间:2023-11-30 00:53:17 25 4
gpt4 key购买 nike

我正在回顾 boost::asio 的源代码并突然碰到一个奇怪的 C/C++ 语法

template <typename Handler>
auto zero_arg_handler_test(Handler* h)
-> decltype(
sizeof(Handler(*static_cast<const Handler*>(h))),
((*h)()),
char(0));

我理解提供给 decltype 的逗号分隔表达式的顺序求值,尽管 -> 符号的出现令人困惑。知道它是什么吗?谢谢。

最佳答案

那是(C++11 的)尾随返回类型 语法。这:

auto f(/* ... */) -> T
{
// ...
}

等同于:

T f(/* ... */)
{
// ...
}

尾随返回类型语法的优点是它允许根据函数参数或类数据成员来表达返回类型,这是传统语法无法实现的。

关于c++ - 奇怪的 C++ 语法和 decltype,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16750419/

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