gpt4 book ai didi

c++ - 将函数参数类型声明为 auto

转载 作者:搜寻专家 更新时间:2023-10-31 01:28:19 24 4
gpt4 key购买 nike

我使用的是 GCC 6.3,令我惊讶的是,以下代码片段确实可以编译。

auto foo(auto x)
{
return 2.0*x;
}
....
foo(5);

据我所知,它是 GCC 扩展。与以下比较:

    template <typename T, typename R>
R foo(T x)
{
return 2.0*x;
}

除了返回类型推导之外,上面的声明是否等价?

最佳答案

Using the same GCC (6.3) with the -Wpedantic flag将生成以下警告:

warning: ISO C++ forbids use of 'auto' in parameter declaration [-Wpedantic]
auto foo(auto x)
^~~~

While compiling this in newer versions of GCC ,即使没有 -Wpedantic,也会生成此警告,提醒您有关 -fconcepts 标志的信息:

warning: use of 'auto' in parameter declaration only available with -fconcepts
auto foo(auto x)
^~~~
Compiler returned: 0

事实上,concepts做这个:

void foo(auto x)
{
auto y = 2.0*x;
}

相当于:

template<class T>
void foo(T x)
{
auto y = 2.0*x;
}

See here : "如果任何函数参数使用占位符(auto 或约束类型),则函数声明改为缩写函数模板声明: [...](概念 TS)”——强调我的。

关于c++ - 将函数参数类型声明为 auto,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52453881/

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