使用模板参数列表调用 lambda,不提供参数

Bon*_*ero 6 c++ templates c++20

谁能告诉我这是否...

#include <memory>

using namespace std;

int main()
{
    auto f = []<typename T>() -> T
    {
        return 123;
    };
    f.operator ()<int>();
}
Run Code Online (Sandbox Code Playgroud)

... 是不带参数调用 C++20 泛型 lambda 的唯一方法吗?

Hol*_*Cat 3

是的,这是打电话给他们的唯一方式。

如果 lambda 可以更改,请考虑使用标签:

template <typename> struct tag {};

auto f = []<typename T>(tag<T>) {...};
f(tag<int>{});
Run Code Online (Sandbox Code Playgroud)