gpt4 book ai didi

c++ - 这是否使用与此 typedef 相同的函数类型(不是指针)的别名

转载 作者:行者123 更新时间:2023-11-30 02:34:07 25 4
gpt4 key购买 nike

这些是一样的吗?

using on_receipt = void (const string);

typedef void on_receipt(const string);

这些不是函数指针的别名,而是实际的函数类型。他们都编译得很好。看起来奇怪的是 typedef 版本至少有函数名称的占位符,但由于 using 将此占位符移动到 =,没有将返回值和参数分开,这看起来可能不正确或具有误导性。

最佳答案

是的,他们是:

[dcl.typedef]

2 A typedef-name can also be introduced by an alias-declaration. The identifier following the using keyword becomes a typedef-name and the optional attribute-specifier-seq following the identifier appertains to that typedef-name. It has the same semantics as if it were introduced by the typedef specifier. In particular, it does not define a new type.

Live Example

#include <string>
#include <type_traits>

int main()
{
using on_receipt1 = void (const std::string);
typedef void on_receipt2(const std::string);
static_assert(std::is_same<on_receipt1, on_receipt2>::value, "");
}

关于c++ - 这是否使用与此 typedef 相同的函数类型(不是指针)的别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34811364/

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