Date: Thu, 12 Dec 2019 21:26:58 +0100
Can you not just mark that no_copy field as ... no copy?
The following code is not complete, but illustrates the idea.
#include <iostream>
#include <string>
template <typename T>
struct NoCopy : public T
{
template <typename... Args>
NoCopy(Args &&... args) : T(std::forward<Args>(args)...) {}
NoCopy(const NoCopy &) : NoCopy() {}
};
struct Class
{
std::string a;
NoCopy<std::string> b;
};
int main()
{
Class x;
x.a = "foo";
x.b = "bar";
Class y = x;
std::cout << x.a << x.b << "\n";
std::cout << y.a << y.b << "\n";
}
Am Do., 12. Dez. 2019 um 21:17 Uhr schrieb Mario Charest via
Std-Proposals <std-proposals_at_[hidden]>:
>
> Hello Everyone,
>
> Sorry if this has been discuss previously.
>
> Imagine a class with 20 variables, out of these variable one should not be copied by the copy constructor
>
> class Foo {
> std::vector<int> first;
> std::list<int> second;
> ...
> void *no_copy;
>
> Foo (const Foo &);
> }
>
> Writing the Foo copy constructor is detious, error prone and leads to higher maintenance. But what if one could create the copy constructor in such a way that it would tell the compiler to default copy construct all variables, except one (or more)
>
> Foo::Foo(const Foo &) :! no_copy(nullptr)
> {
> }
>
> Notice the:!
>
> Did not put much though into the details, but wanted to first get a feel if this make sense.
>
> - Regards
>
> --
> Std-Proposals mailing list
> Std-Proposals_at_[hidden]
> https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals
The following code is not complete, but illustrates the idea.
#include <iostream>
#include <string>
template <typename T>
struct NoCopy : public T
{
template <typename... Args>
NoCopy(Args &&... args) : T(std::forward<Args>(args)...) {}
NoCopy(const NoCopy &) : NoCopy() {}
};
struct Class
{
std::string a;
NoCopy<std::string> b;
};
int main()
{
Class x;
x.a = "foo";
x.b = "bar";
Class y = x;
std::cout << x.a << x.b << "\n";
std::cout << y.a << y.b << "\n";
}
Am Do., 12. Dez. 2019 um 21:17 Uhr schrieb Mario Charest via
Std-Proposals <std-proposals_at_[hidden]>:
>
> Hello Everyone,
>
> Sorry if this has been discuss previously.
>
> Imagine a class with 20 variables, out of these variable one should not be copied by the copy constructor
>
> class Foo {
> std::vector<int> first;
> std::list<int> second;
> ...
> void *no_copy;
>
> Foo (const Foo &);
> }
>
> Writing the Foo copy constructor is detious, error prone and leads to higher maintenance. But what if one could create the copy constructor in such a way that it would tell the compiler to default copy construct all variables, except one (or more)
>
> Foo::Foo(const Foo &) :! no_copy(nullptr)
> {
> }
>
> Notice the:!
>
> Did not put much though into the details, but wanted to first get a feel if this make sense.
>
> - Regards
>
> --
> Std-Proposals mailing list
> Std-Proposals_at_[hidden]
> https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals
Received on 2019-12-12 14:29:35