自动参数如何在内部工作
How do auto arguments work internally?
考虑代码,
#include <cstdio>
auto f(const auto &loc){
printf("Location: %pn", &loc);
}
int main()
{
auto x {1};
auto y {2.3};
f(x);
f(y);
}
使用g++ -std=c++14 dummy.cpp
编译
问题:
对于模板函数,类型在编译时被明确提及(f<int>(2)
(。
函数f
如何接受不同类型的参数?
在概念技术规范下 "功能">
auto f(const auto &loc){
printf("Location: %pn", &loc);
}
实际上是一个template
(缩写函数模板声明(,等效于(但比(
template<typename T>
void f(const T&loc){
printf("Location: %pn", &loc);
}
但是请注意,使用auto
的形式还不是任何C++标准的一部分,而只是概念和约束的概念技术规范的一部分,它看起来非常强大(但 AFAIK 仅受 GNU 的 gcc 版本 ≥6.1 带有选项 -fconcepts
的支持(。
相关文章:
- 如何在公共头文件中向库的用户公开枚举,同时在内部使用它?
- std::strlen 在内部是如何工作的?
- STRCMP内部IF在内部不起作用
- 递归函数调用在后台工作
- 虚拟基类在内部如何工作?编译器如何解析对基方法的调用?
- 访问说明符(私有/公共/受保护)如何在内部工作(限制成员访问)?
- 指向C++中成员的指针如何在内部工作?
- 删除和删除[]在内部如何工作?
- 自动参数如何在内部工作
- C++放置位置删除如何在内部(C++运行时)工作?如何克服其局限性?
- 函数指针仅在 main 内部工作
- 如果不允许我分配 rvalues 来引用为什么以下代码片段有效,这在内部如何工作?
- 如何将负数转换为更广泛的类型在内部工作
- 在UTF-8内部工作,然后仅在Windows中需要时转换为UTF-16,是否存在任何危险
- 静态是如何在函数内部工作的
- 套接字api不能在类内部工作
- Setter不在类方法内部工作
- 在哪里可以找到SciPy库中csr矩阵加法的内部工作
- C++14记忆模型如何在内部工作以及它与培根的垃圾收集统一理论的比较
- Switch case语句如何在内部实现或工作