相关疑难解决方法(0)

获取lambda参数类型

我想要一些方法来获得lambda函数的第一个参数类型,这可能吗?

例如

代替:

template<typename T>
struct base
{
     virtual bool operator()(T) = 0;
}

template<typename F, typename T>
struct filter : public base<T>
{
     virtual bool operator()(T) override {return /*...*/ }
};

template<typename T, typename F>
filter<T> make_filter(F func)
{
      return filter<F, T>(std::move(func));
}

auto f = make_filter<int>([](int n){return n % 2 == 0;});
Run Code Online (Sandbox Code Playgroud)

我想要:

template<typename F>
struct filter : public base<typename param1<F>::type>
{
     bool operator()(typename param1<F>::type){return /*...*/ }
};

template<typename F>
filter<F> make_filter(F func)
{
      return filter<F>(std::move(func));
}

auto …
Run Code Online (Sandbox Code Playgroud)

c++ templates visual-studio-2010 type-traits c++11

12
推荐指数
1
解决办法
2786
查看次数

标签 统计

c++ ×1

c++11 ×1

templates ×1

type-traits ×1

visual-studio-2010 ×1