C++ Logo

std-proposals

Advanced search

[std-proposals] Should copying of the same type or its subtype be prohibited before constructing an object?

From: David wang <wangjufan_at_[hidden]>
Date: Mon, 13 May 2024 22:36:26 +0800
Hi everyone.

In C++, we can pass an object of the same type by value to the constructor
of the class, which results in a copy of the same type or its subtype being
required.

The sequence of constructor calls can be greatly optimized by disabling
copying of the same type or its subtypes before constructing an object.
I'm confused why C++ doesn't disable it.

That is, when we are going to do something(constructing an object via some
constructor), the prerequisite is that we need to do something of the same
kind. For example, the derived(*int* i, derived that) and *template* <
*typename* T> base(T x) in the code snippet below.

*struct* base {

  base() {}

  *template* <*typename* T> base(T x) {}

};

*struct* derived : *public* base {

  derived(){}

  derived(*int* i, derived that): base(that) {}

  derived(derived& that): base(that) {}

};

*int* main() {

  derived d1;

  derived d2(d1);

  *return* 0;

}

Received on 2024-05-13 14:36:39