use*_*557 35 c++ arguments function auto
有没有办法将auto作为参数传递给另一个函数?
int function(auto data)
{
    //DOES something
}
Mik*_*our 41
如果您希望这意味着您可以将任何类型传递给函数,请将其设为模板:
template <typename T> int function(T data);
有一个C++ 17的提议允许你使用的语法(正如C++ 14已经为通用lambdas做的那样),但它还不是标准的.
Ami*_*rsh 34
auto作为函数参数类型此代码在使用 C++20 时有效:
int function(auto data) {
   // do something, there is no constraint on data
}
作为一个缩写的函数模板。
这是非约束类型约束(即无约束自动参数)的特例。使用概念,约束类型约束版本(即受约束的自动参数)将是例如:
void function(const Sortable auto& data) {
    // do something that requires data to be Sortable
    // assuming there is a concept named Sortable
}
在我的朋友Yehezkel Bernat的帮助下,规范中的措辞:
9.2.8.5 占位符类型说明符 [dcl.spec.auto]
占位符类型说明符:
类型约束选择自动
类型约束opt decltype ( auto )
占位符类型说明符指定一个占位符类型,稍后将通过初始化程序的推导来替换该占位符类型。
type-constraint opt auto形式的占位符类型说明符可以用在函数声明或 lambda 表达式的参数声明的 decl-specifier-seq 中,并表示该函数是一个缩写的函数模板 (9.3. 3.5) ...
Tar*_*ama 23
模板是使用普通函数执行此操作的方式:
template <typename T>
int function(T data)
{
    //DOES something
}
或者,您可以使用lambda:
auto function = [] (auto data) { /*DOES something*/ };
| 归档时间: | 
 | 
| 查看次数: | 15656 次 | 
| 最近记录: |