gpt4 book ai didi

c++ - std::move 在类模板中的构造函数初始值设定项列表中

转载 作者:可可西里 更新时间:2023-11-01 15:45:39 24 4
gpt4 key购买 nike

我有一个这样的模板:

template<typename T>
struct foo {
T m_t;
foo(T t) : m_t(t) {}
};

问题是我想为T 支持小型/常规类型和大型 类型(如矩阵)。你推荐我这样写构造函数初始化列表吗

foo (T t) : m_t(std::move(t)) {}

并要求 T 类型始终支持 move 构造,即使对于较小的类型也是如此?有没有更好的方法?

最佳答案

and require that the type T always support move construction, even for smaller types?

任何可复制构造的类型也可 move 构造。在这些情况下 move 只需调用复制构造函数。因此,没有理由使用m_t(std::move(t))

另一种方法是使用引用:

foo (T const& t) : m_t(t) {}
foo (T&& t) : m_t(std::move(t)) {}

这样做的好处是只涉及一个结构而不是两个。

关于c++ - std::move 在类模板中的构造函数初始值设定项列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17033984/

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