auto f1 = []<typename T>(T) { return T{}; };
auto f2 = []<typename T>() { return T{}; };
int main()
{
f1(1); // ok
f2<int>(); // err: expected primary-expression before 'int'
}
Run Code Online (Sandbox Code Playgroud)
为什么 C++20 不允许使用显式类型调用泛型 lambda?
调用提供模板参数的重载模板运算符 () 函数的正确语法是
auto f1 = []<typename T>(T) { return T{}; };
auto f2 = []<typename T>() { return T{}; };
int main()
{
f1(1); // ok
f2.operator ()<int>(); // Ok
}
Run Code Online (Sandbox Code Playgroud)
https://godbolt.org/z/YzY7njPGh
归档时间: |
|
查看次数: |
113 次 |
最近记录: |