我想声明一个这样的函数:
template <typename Lambda>
int foo(Lambda bar) {
if(/* check bar is null lambda */)
return -1;
else
return bar(3);
}
int main() {
std::cout << foo([](int a)->int{return a + 3;}) << std::endl;
std::cout << foo(NULL_LAMBDA) << std::endl;
}
那么,如何声明NULL_LAMBDA
和条件检查通过的lambda函数是否为null?
最佳答案
您可以添加专门的特化:
#include <iostream>
#include <cstddef>
template<typename Lambda> int
foo(Lambda bar)
{
return(bar(3));
}
template<> int
foo<::std::nullptr_t>(::std::nullptr_t)
{
return(-1);
}
int main()
{
::std::cout << foo([] (int a) -> int {return(a + 3);}) << ::std::endl;
::std::cout << foo(nullptr) << ::std::endl;
}
关于c++ - 如何在 C++ 中使用 Null Lambda?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45727933/