小编Pro*_*585的帖子

扣除模板参数C++

请考虑以下代码:

template<typename T>
bool function1(T some_var) { return true; }

template <typename T>
bool (*function2())(T) {
  return function1<T>;
}

void function3( bool(*input_function)(char) ) {}
Run Code Online (Sandbox Code Playgroud)

如果我打电话

function3(function2<char>());
Run Code Online (Sandbox Code Playgroud)

没关系.但是,如果我打电话

function3(function2());
Run Code Online (Sandbox Code Playgroud)

编译器给出的错误是它无法推导出模板的参数.

请问,你可以建议(提出一个想法)如何重写function1和/或function2(可能,基本上是用类重写)来使它好吗?

*添加*

我正在尝试做一些简单的事情,比如Boost.LambdaLib中的lambda表达式(可能是,我的方法不对):

sort(some_vector.begin(), some_vector.end(), _1 < _2)
Run Code Online (Sandbox Code Playgroud)

我这样做了:

template<typename T>
bool my_func_greater (const T& a, const T& b) {
  return a > b;
}

template<typename T>
bool my_func_lesser (const T& a, const T& b) {
  return b > a;
}

class my_comparing {
 public:
  int value;
  my_comparing(int value) : value(value) …
Run Code Online (Sandbox Code Playgroud)

c++ templates

6
推荐指数
2
解决办法
405
查看次数

简单的lambda表达式C++ 03没有boost等等

您能否以简单,优雅和智能的方式介绍如何在没有特殊库的情况下在C++ 03中实现基本的lambda表达式?他们应该可以做这样的事情:

for_each(some_vector.begin(), some_vector.end(), _first = -5)
sort(some_vector.begin(), some_vector.end(), _first > _last)
Run Code Online (Sandbox Code Playgroud)

我在StackOverflow和互联网的其他地方看过很多主题,但不幸的是,我没有找到有用的东西.另一个想法是仔细研究Boost实现,但遗憾的是,我的水平现在还不太合适.

先感谢您!

c++ lambda c++03

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

标签 统计

c++ ×2

c++03 ×1

lambda ×1

templates ×1