【发布时间】:2015-08-11 19:45:53
【问题描述】:
这些天我在学习 c++11/14,它对我来说似乎是一门全新的语言,有很多很棒的附加功能,但我仍然不能完全利用所有这些新功能:
typedef std::function<void()> void_f;
typedef std::function<void(int a, void_f b)> f1;
typedef std::function<void(int a, std::function<void(void_f f)> c, void_f b)> f2; // this order is wanted
std::vector<f1> v;
void add(f1 f)
{
v.push_back(f);
}
void add(f2 f)
{
v.push_back(f) // ?
// I want to extract 'void_f f' argument from std::function for later use
//and remove std::function completely to get same signature as f1
}
我一直在查看 std::move、std::bind、std::forward、std::placeholders 但我似乎找不到这样的东西。也许我应该在向量中保存更长的版本,然后为更短的绑定空 lambda?
【问题讨论】:
-
"我想从 std::function 中提取 'void_f f' 参数以供以后使用并完全删除 std::function" 是什么意思?
-
A
std::function是可以用它的参数调用的东西,而不是 有 参数的东西? -
为什么要从
std::function中提取函数指针?你希望它能给你带来什么? 注意可能根本没有函数指针 -
我更新了我的问题,以更好地反映我想要实现的目标。我只想保存在同一个向量支架中,但也重用 std::function
的第二个参数 -
第二个和第三个 typedef 没有任何意义,不能编译
标签: c++ c++11 c++14 std-function stdbind