【发布时间】:2019-03-04 19:23:34
【问题描述】:
所以c++17 有std::function Deduction Guides 所以给定:
int foo();
我能做到:
std::function bar(foo);
但我被困在c++14 编译器上。在那里我必须做更多类似的事情:function<int()> bar(foo)。我想知道是否有一种方法可以创建 std::function 而不传递函数指针 和 显式提供函数签名?因此,例如make_pair 将从它的参数中推断出它的返回类型。我想知道即使使用c++14,我是否可以为functions 写类似的东西,比如:
auto bar = make_function(foo);
这可行吗?
注意:我的真实情况是foo 是一个模板函数,其中包含很多我不想推断的参数。所以我的动机是生成一个function 而不需要提供参数类型。
【问题讨论】:
-
在您的实际情况下,
std::function bar(foo)在c++17 中不起作用。请在法律c++17 中提供您想要做的实际minimal reproducible example,并要求在c++14 中实现类似的东西。 -
@Yakk-AdamNevraumont 我不确定你说它不起作用是什么意思……我已经添加了一个例子:耸耸肩:
-
“我的真实案例是 foo 是一个带有很多参数的模板函数” - 你的“minimal reproducible example”与你的真实用例根本不同,@ 987654332@。在编写minimal reproducible example 时,从真实用例 开始,然后最小化。不要首先最小化。
-
@Yakk-AdamNevraumont 所以this is my original question。你可以在底部看到我的答案。我在评论中的意思是寻求一种生成
function的方法,这可以通过我仅传递一个函数指针来完全定义。我以为这很清楚?我的编辑对你有用吗? -
@Yakk-AdamNevraumont 我要从您的编辑中得知您正在确认我们现在的情况?
标签: c++17 c++14 c++14 c++ function c++14 c++17 template-argument-deduction