相关疑难解决方法(0)

为什么std :: function :: argument_type已被弃用?

我在cppreference上看到了std::function::argument_type在C++ 17 中被弃用的东西.它背后的原因是什么?ISO WG21论文提出了哪些建议?

c++ function deprecated language-lawyer c++17

18
推荐指数
2
解决办法
1741
查看次数

获取模板可调用对象的参数类型

考虑以下功能:

template<class F>
void register_handler( F& f ) // any callable object
{
   // find out T - the argument type of f
}
Run Code Online (Sandbox Code Playgroud)

f是一个可调用的对象,接受一个参数.它可以是函数指针,也可以std::function是结果std::bind.

问题是,如何确定参数类型f并根据该类型执行某些操作?


一个简单的解决方法是明确地将类型添加到模板中,例如

template<class T, class F> // T is the argument type of F
void register_handler( F& f )
Run Code Online (Sandbox Code Playgroud)

但这似乎有点过分,因为类型F应该已经包含有关类型的必要信息T.

c++ templates template-meta-programming c++11

17
推荐指数
3
解决办法
5383
查看次数

什么是多态lambda?

lambdas(匿名函数)的概念对我来说非常清楚.而且我知道类的多态性,运行时/动态调度用于根据实例的派生类型调用适当的方法.但是lambda究竟能够多态化吗?我是另一个Java程序员,试图学习更多有关函数式编程的知识.

polymorphism lambda haskell functional-programming function

2
推荐指数
1
解决办法
2521
查看次数