Des*_*ess 3 c++ lambda templates c++20
MSVC 2019 允许我定义这样的 lambda,其中模板参数未在参数列表中使用:
auto foo = []<bool B>() {
return B;
};
Run Code Online (Sandbox Code Playgroud)
但是,当尝试像这样调用它时,它会给出语法错误?
foo<false>();
Run Code Online (Sandbox Code Playgroud)
使用非参数模板参数调用 lambda 的正确方法是什么?
son*_*yao 12
模板参数与lambdaoperator()
一起使用。
(C++20 起) 如果 lambda 定义使用显式模板参数列表,则该模板参数列表与 operator() 一起使用。
您可以为 指定非类型模板参数operator()
,以非正常风格调用 lambda,如下所示:
foo.operator()<false>();
Run Code Online (Sandbox Code Playgroud)