C++ Logo

std-proposals

Advanced search

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

From: Arthur O'Dwyer <arthur.j.odwyer_at_[hidden]>
Date: Mon, 13 May 2024 10:39:01 -0400
That's just an infinite recursion. Like this:
  int f(int x) {
    return f(x-1);
  }
Sure, *sometimes* you write an infinite recursion by accident. But that's
no reason to ban *all* recursion from the language. Just don't do that,
then.

–Arthur

On Mon, May 13, 2024 at 10:36 AM David wang via Std-Proposals <
std-proposals_at_[hidden]> wrote:

> 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;
>
> }
>
> --
> Std-Proposals mailing list
> Std-Proposals_at_[hidden]
> https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals
>

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