是否存在用于测试lambda对象的类型特征谓词?

时间:2019-01-15 20:57:01

标签: c++ typetraits

如何测试天气是lambda对象的天气?是否有一个用于测试它的type_trait谓词?它只想断言它是一个lambda对象,则返回true,如果std :: function,函数指针或其他对象返回false。下面是测试代码:

#include <iostream>
#include <functional>

template <typename T,typename = typename std::enable_if_t<std::is_integral<T>::value>>
void do_stuff(T&& t) {
    std::cout << "is integral\n";
}

template <typename T /* type of predicate do I need to use to match a lambda? */ >
void do_stuff(T&& t) {
    std::cout << "is lambda\n";
}

int main(int argc, char **argv) {
    int a = 10;
    do_stuff(a);

    /* what type of predicate do I need to use above? */
    do_stuff([](){});
    return 0;
}

1 个答案:

答案 0 :(得分:0)

可以创建一个行为与la​​mbda完全一样的类,并且没有必要将此类与lambda区别开。