是否可以std::function
使用模板参数定义的类型的构造函数来构造 a ?
例如:
template <typename T>
bool registerType()
{
const std::function<T()> func = &T::T; //I know this doesn't work
//...
}
是否可以std::function
使用模板参数定义的类型的构造函数来构造 a ?
例如:
template <typename T>
bool registerType()
{
const std::function<T()> func = &T::T; //I know this doesn't work
//...
}
我不这么认为,因为构造函数没有名称,你不能对它们进行指针/引用,而且通常它们的行为不像函数。
您可以使用 lambda 来初始化std::function
具有相同签名的 a:
const std::function<T()> func = [](void) { return T(); } // or something like that
T()
调用它会产生与使用表达式构造临时类型相同的结果T
,但可能具有不同的副作用。在真正的函数调用的情况下,return 语句中有一个额外的临时变量,名义上它被复制/移动到返回值。实现可能会也可能不会忽略额外的临时性。