gpt4 book ai didi

c++ - 使用基于模板的构造函数构造 std::function

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:20:07 24 4
gpt4 key购买 nike

是否可以使用模板参数定义的类型的构造函数构造 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 类型的临时对象的结果相同,但可能具有不同的副作用。在真正的函数调用的情况下,返回语句中有一个额外的临时变量,名义上被复制/移动到返回值。实现可能会也可能不会省略额外的临时文件。

关于c++ - 使用基于模板的构造函数构造 std::function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12386725/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com