是否有可能构造std::function
通过一个模板参数定义的类型的构造函数?
例如:
template <typename T>
bool registerType()
{
const std::function<T()> func = &T::T; //I know this doesn't work
//...
}
是否有可能构造std::function
通过一个模板参数定义的类型的构造函数?
例如:
template <typename T>
bool registerType()
{
const std::function<T()> func = &T::T; //I know this doesn't work
//...
}
我不这么认为,因为构造函数没有名字,你不能把一个指针/引用他们,一般他们不循规蹈矩很喜欢的功能。
你可以使用lambda初始化std::function
具有相同签名:
const std::function<T()> func = [](void) { return T(); } // or something like that
调用它产生相同的结果作为使用表达式T()
来构造一个临时类型T
,但有可能进行不同的副作用。 在一个真正的函数调用的情况下,有一个在return语句,它名义上是复制一个额外的临时/移动到返回值。 实施可以或不可以的的Elid额外暂时的。