【发布时间】:2018-08-11 14:01:01
【问题描述】:
假设我有一个 lambda 可以做某事:
auto thing = [](int x){ /* Stuff */ };
我想保存值“x”并稍后调用它,所以我这样做:
auto other = boost::hana::partial(thing, 42);
现在,因为我想对此进行一些类型擦除,所以我想获取operator().....所以我尝试这样做:
using type = decltype(other);
void (type::*ptr)(void) = &type::operator();
Clang 抱怨,other 对象没有满足要求的足够功能:godbolt
似乎partial 类型正在返回一个引用(到void?)......为什么这不起作用?
【问题讨论】:
-
为什么要指定
void (type::*ptr)(void)?为什么不只是auto ptr = &type::operator();? +1 使用 Boost Hana。 -
@Eljay 我需要指定类型,因为这实际上是一个模板怪物的深处,需要能够处理重载(这意味着需要指定类型)
标签: c++ c++14 function-pointers boost-hana