小编dba*_*dba的帖子

我可以安全地将分配移动到“this”吗?

我想知道通过使用移动赋值运算符来编写reset某个类的方法是否安全。Athis

所以而不是

A a{};
... // Do something with a
a = A();
Run Code Online (Sandbox Code Playgroud)

如果我能写

A a{};
... // Do something with a
a.reset();
Run Code Online (Sandbox Code Playgroud)

在哪里

void A::reset()
{
  *this = A();
}
Run Code Online (Sandbox Code Playgroud)

我在 godbolt ( https://godbolt.org/z/Edc3TT1aT )上玩了一下,生成的调试程序集与本示例中的 gdb 几乎相同。

c++ move-semantics

15
推荐指数
1
解决办法
959
查看次数

C++ 概念:检查是否派生自具有未知模板参数的模板化类

有没有一种方法可以使用 C++ 概念来要求类派生自模板化类,而模板化类的模板参数又是另一个模板化类的派生类。

例子:

template <class T>
class A{};

template <class T>
class B{};

class X{};
class Y : public A<X> {};

class Z : public B<Y> {};
Run Code Online (Sandbox Code Playgroud)

我如何办理登机手续B,这是某些人的T表格而不指定是什么?我不想添加到 的模板参数列表中,因为我不想在派生自的每个实例上更改代码(例如最后一行)。std::is_base_of<A<X>,T>XXXBBclass Z

c++ c++-concepts c++20

11
推荐指数
1
解决办法
2203
查看次数

标签 统计

c++ ×2

c++-concepts ×1

c++20 ×1

move-semantics ×1