Deletion of copy-ctor & copy-assignment - public, private or protected?2019 Community Moderator ElectionWhat are the differences between a pointer variable and a reference variable in C++?What is the difference between public, protected, package-private and private in Java?In C#, what is the difference between public, private, protected, and having no access modifier?Difference between private, public, and protected inheritanceWhat is the copy-and-swap idiom?What is The Rule of Three?What are the basic rules and idioms for operator overloading?Why should C++ programmers minimize use of 'new'?Replacing a 32-bit loop counter with 64-bit introduces crazy performance deviationsDefault move constructor/assignment and deleted copy constructor/assignment
Am I eligible for the Eurail Youth pass? I am 27.5 years old
Why Choose Less Effective Armour Types?
Knife as defense against stray dogs
What favor did Moody owe Dumbledore?
Worshiping one God at a time?
I got the following comment from a reputed math journal. What does it mean?
What are substitutions for coconut in curry?
Fewest number of steps to reach 200 using special calculator
gerund and noun applications
What can I do if I am asked to learn different programming languages very frequently?
Is honey really a supersaturated solution? Does heating to un-crystalize redissolve it or melt it?
Why is indicated airspeed rather than ground speed used during the takeoff roll?
Turning a hard to access nut?
Variable completely messes up echoed string
Brake pads destroying wheels
Do US professors/group leaders only get a salary, but no group budget?
How do hiring committees for research positions view getting "scooped"?
Optimising a list searching algorithm
What exactly term 'companion plants' means?
HP P840 HDD RAID 5 many strange drive failures
Is it correct to say "which country do you like the most?"
Is it insecure to send a password in a `curl` command?
Synchronized implementation of a bank account in Java
Matrix using tikz package
Deletion of copy-ctor & copy-assignment - public, private or protected?
2019 Community Moderator ElectionWhat are the differences between a pointer variable and a reference variable in C++?What is the difference between public, protected, package-private and private in Java?In C#, what is the difference between public, private, protected, and having no access modifier?Difference between private, public, and protected inheritanceWhat is the copy-and-swap idiom?What is The Rule of Three?What are the basic rules and idioms for operator overloading?Why should C++ programmers minimize use of 'new'?Replacing a 32-bit loop counter with 64-bit introduces crazy performance deviationsDefault move constructor/assignment and deleted copy constructor/assignment
In order to make an object non-copiable we can explicitly delete both its copy-constructor and copy-assignment operator.
My question is: What is the right place to do it - in the public, private or protected section of the class? And - does this choice make any difference?
c++ c++11 access-modifiers deleted-functions
add a comment |
In order to make an object non-copiable we can explicitly delete both its copy-constructor and copy-assignment operator.
My question is: What is the right place to do it - in the public, private or protected section of the class? And - does this choice make any difference?
c++ c++11 access-modifiers deleted-functions
If you throw your old shoes away, do you think about where to store them?
– Klaus
13 hours ago
10
@Klaus: No, but you think about where to throw them...
– einpoklum
11 hours ago
add a comment |
In order to make an object non-copiable we can explicitly delete both its copy-constructor and copy-assignment operator.
My question is: What is the right place to do it - in the public, private or protected section of the class? And - does this choice make any difference?
c++ c++11 access-modifiers deleted-functions
In order to make an object non-copiable we can explicitly delete both its copy-constructor and copy-assignment operator.
My question is: What is the right place to do it - in the public, private or protected section of the class? And - does this choice make any difference?
c++ c++11 access-modifiers deleted-functions
c++ c++11 access-modifiers deleted-functions
edited 6 hours ago
StoryTeller
102k12215279
102k12215279
asked 13 hours ago
SajalSajal
613515
613515
If you throw your old shoes away, do you think about where to store them?
– Klaus
13 hours ago
10
@Klaus: No, but you think about where to throw them...
– einpoklum
11 hours ago
add a comment |
If you throw your old shoes away, do you think about where to store them?
– Klaus
13 hours ago
10
@Klaus: No, but you think about where to throw them...
– einpoklum
11 hours ago
If you throw your old shoes away, do you think about where to store them?
– Klaus
13 hours ago
If you throw your old shoes away, do you think about where to store them?
– Klaus
13 hours ago
10
10
@Klaus: No, but you think about where to throw them...
– einpoklum
11 hours ago
@Klaus: No, but you think about where to throw them...
– einpoklum
11 hours ago
add a comment |
3 Answers
3
active
oldest
votes
what is the right place to do it - in the public, private or protected section of the class?
I would put them in the public section.
This is because deleting a constructor or an assignment operator is orthogonal to making them private / protected; and when these aren't deleted, they are public. Putting the deletions in one of those two sections seems to me like hinting "If I hadn't deleted them, I would have made them private/protected" - which is not a message you want to convey in your case.
Note, though, that the compiler doesn't care which section you put the deletion in.
2
Exactly this. Back in the day we made these things private specifically to deny folks access to them, but this was always a hack and was only because we couldn'tdeletethem. That consideration is no longer in play. I don't remember whether the "copy constructor is private" diagnostic tends to take precedence over the "copy constructor is deleted" diagnostic (I doubt it) but even if it doesn't changing the access level is not the right thing to do for the reasons you give.
– Lightness Races in Orbit
6 hours ago
@LightnessRacesinOrbit I know I've seen some compilers give both errors when a function is private and deleted. The one about private access becomes just extra noise.
– aschepler
1 hour ago
@aschepler Fair does
– Lightness Races in Orbit
1 hour ago
@aschepler: Examples?
– einpoklum
1 hour ago
gcc 7.4, but not gcc 8.1: godbolt.org/z/udzwB2 (so I guess they improved that).
– aschepler
50 mins ago
|
show 2 more comments
Does where we put the deleted definition make any difference?
From a pure language standpoint it makes absolutely zero difference. Name lookup and overload resolution happen before access checking. And attempting to refer to a deleted function at the end of overload resolution makes your program ill-formed, period. A compiler may or may not issue another diagnostic about the accessibility, but the program already has an error that must be reported.
So you can put that deleted definition with whatever accessibility you desire. I think most will keep it private, to be inline with the "old" practice of making a class non-copyable (put the declaration of those members in the private section of the class, and not define them), if only to help those who know the old ways "get it" sooner. A mixture of idioms, if you would.
Marking as private is also something you can't avoid if you need to support both C++03 and C++11 mode. With the help of a macro, a header can be made to conform to both standards easily:
#if __cplusplus >= 201103L
#define DELETED_DEFINITION = delete
#else
#define DELETED_DEFINITION
#endif
class noncopyable
private:
// This header can be compiled as both C++11 and C++03
noncopyable(noncopyable const&) DELETED_DEFINITION;
void operator=(noncopyable const&) DELETED_DEFINITION;
;
If you want backwards compatibility then this is a must.
– Lightness Races in Orbit
6 hours ago
add a comment |
From Scott Meyers's book, Effective Modern C++ (Item 10), it seems that it is better to define them as public:
By convention, deleted functions are declared public, not private.
There’s a reason for that. When client code tries to use a member
function, C++ checks accessibility before deleted status. When client
code tries to use a deleted private function, some compilers complain
only about the function being private, even though the function’s
accessibility doesn’t really affect whether it can be used. It’s worth
bearing this in mind when revising legacy code to replace
private-and-not-defined member functions with deleted ones, because
making the new functions public will generally result in better error
messages.
Meyers contradicts StoryTeller's answer, and my tests. It's still good advice, but I find einpoklum's reasoning to be superior.
– Lightness Races in Orbit
1 hour ago
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55205874%2fdeletion-of-copy-ctor-copy-assignment-public-private-or-protected%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
what is the right place to do it - in the public, private or protected section of the class?
I would put them in the public section.
This is because deleting a constructor or an assignment operator is orthogonal to making them private / protected; and when these aren't deleted, they are public. Putting the deletions in one of those two sections seems to me like hinting "If I hadn't deleted them, I would have made them private/protected" - which is not a message you want to convey in your case.
Note, though, that the compiler doesn't care which section you put the deletion in.
2
Exactly this. Back in the day we made these things private specifically to deny folks access to them, but this was always a hack and was only because we couldn'tdeletethem. That consideration is no longer in play. I don't remember whether the "copy constructor is private" diagnostic tends to take precedence over the "copy constructor is deleted" diagnostic (I doubt it) but even if it doesn't changing the access level is not the right thing to do for the reasons you give.
– Lightness Races in Orbit
6 hours ago
@LightnessRacesinOrbit I know I've seen some compilers give both errors when a function is private and deleted. The one about private access becomes just extra noise.
– aschepler
1 hour ago
@aschepler Fair does
– Lightness Races in Orbit
1 hour ago
@aschepler: Examples?
– einpoklum
1 hour ago
gcc 7.4, but not gcc 8.1: godbolt.org/z/udzwB2 (so I guess they improved that).
– aschepler
50 mins ago
|
show 2 more comments
what is the right place to do it - in the public, private or protected section of the class?
I would put them in the public section.
This is because deleting a constructor or an assignment operator is orthogonal to making them private / protected; and when these aren't deleted, they are public. Putting the deletions in one of those two sections seems to me like hinting "If I hadn't deleted them, I would have made them private/protected" - which is not a message you want to convey in your case.
Note, though, that the compiler doesn't care which section you put the deletion in.
2
Exactly this. Back in the day we made these things private specifically to deny folks access to them, but this was always a hack and was only because we couldn'tdeletethem. That consideration is no longer in play. I don't remember whether the "copy constructor is private" diagnostic tends to take precedence over the "copy constructor is deleted" diagnostic (I doubt it) but even if it doesn't changing the access level is not the right thing to do for the reasons you give.
– Lightness Races in Orbit
6 hours ago
@LightnessRacesinOrbit I know I've seen some compilers give both errors when a function is private and deleted. The one about private access becomes just extra noise.
– aschepler
1 hour ago
@aschepler Fair does
– Lightness Races in Orbit
1 hour ago
@aschepler: Examples?
– einpoklum
1 hour ago
gcc 7.4, but not gcc 8.1: godbolt.org/z/udzwB2 (so I guess they improved that).
– aschepler
50 mins ago
|
show 2 more comments
what is the right place to do it - in the public, private or protected section of the class?
I would put them in the public section.
This is because deleting a constructor or an assignment operator is orthogonal to making them private / protected; and when these aren't deleted, they are public. Putting the deletions in one of those two sections seems to me like hinting "If I hadn't deleted them, I would have made them private/protected" - which is not a message you want to convey in your case.
Note, though, that the compiler doesn't care which section you put the deletion in.
what is the right place to do it - in the public, private or protected section of the class?
I would put them in the public section.
This is because deleting a constructor or an assignment operator is orthogonal to making them private / protected; and when these aren't deleted, they are public. Putting the deletions in one of those two sections seems to me like hinting "If I hadn't deleted them, I would have made them private/protected" - which is not a message you want to convey in your case.
Note, though, that the compiler doesn't care which section you put the deletion in.
edited 6 hours ago
answered 12 hours ago
einpoklumeinpoklum
35.7k27131257
35.7k27131257
2
Exactly this. Back in the day we made these things private specifically to deny folks access to them, but this was always a hack and was only because we couldn'tdeletethem. That consideration is no longer in play. I don't remember whether the "copy constructor is private" diagnostic tends to take precedence over the "copy constructor is deleted" diagnostic (I doubt it) but even if it doesn't changing the access level is not the right thing to do for the reasons you give.
– Lightness Races in Orbit
6 hours ago
@LightnessRacesinOrbit I know I've seen some compilers give both errors when a function is private and deleted. The one about private access becomes just extra noise.
– aschepler
1 hour ago
@aschepler Fair does
– Lightness Races in Orbit
1 hour ago
@aschepler: Examples?
– einpoklum
1 hour ago
gcc 7.4, but not gcc 8.1: godbolt.org/z/udzwB2 (so I guess they improved that).
– aschepler
50 mins ago
|
show 2 more comments
2
Exactly this. Back in the day we made these things private specifically to deny folks access to them, but this was always a hack and was only because we couldn'tdeletethem. That consideration is no longer in play. I don't remember whether the "copy constructor is private" diagnostic tends to take precedence over the "copy constructor is deleted" diagnostic (I doubt it) but even if it doesn't changing the access level is not the right thing to do for the reasons you give.
– Lightness Races in Orbit
6 hours ago
@LightnessRacesinOrbit I know I've seen some compilers give both errors when a function is private and deleted. The one about private access becomes just extra noise.
– aschepler
1 hour ago
@aschepler Fair does
– Lightness Races in Orbit
1 hour ago
@aschepler: Examples?
– einpoklum
1 hour ago
gcc 7.4, but not gcc 8.1: godbolt.org/z/udzwB2 (so I guess they improved that).
– aschepler
50 mins ago
2
2
Exactly this. Back in the day we made these things private specifically to deny folks access to them, but this was always a hack and was only because we couldn't
delete them. That consideration is no longer in play. I don't remember whether the "copy constructor is private" diagnostic tends to take precedence over the "copy constructor is deleted" diagnostic (I doubt it) but even if it doesn't changing the access level is not the right thing to do for the reasons you give.– Lightness Races in Orbit
6 hours ago
Exactly this. Back in the day we made these things private specifically to deny folks access to them, but this was always a hack and was only because we couldn't
delete them. That consideration is no longer in play. I don't remember whether the "copy constructor is private" diagnostic tends to take precedence over the "copy constructor is deleted" diagnostic (I doubt it) but even if it doesn't changing the access level is not the right thing to do for the reasons you give.– Lightness Races in Orbit
6 hours ago
@LightnessRacesinOrbit I know I've seen some compilers give both errors when a function is private and deleted. The one about private access becomes just extra noise.
– aschepler
1 hour ago
@LightnessRacesinOrbit I know I've seen some compilers give both errors when a function is private and deleted. The one about private access becomes just extra noise.
– aschepler
1 hour ago
@aschepler Fair does
– Lightness Races in Orbit
1 hour ago
@aschepler Fair does
– Lightness Races in Orbit
1 hour ago
@aschepler: Examples?
– einpoklum
1 hour ago
@aschepler: Examples?
– einpoklum
1 hour ago
gcc 7.4, but not gcc 8.1: godbolt.org/z/udzwB2 (so I guess they improved that).
– aschepler
50 mins ago
gcc 7.4, but not gcc 8.1: godbolt.org/z/udzwB2 (so I guess they improved that).
– aschepler
50 mins ago
|
show 2 more comments
Does where we put the deleted definition make any difference?
From a pure language standpoint it makes absolutely zero difference. Name lookup and overload resolution happen before access checking. And attempting to refer to a deleted function at the end of overload resolution makes your program ill-formed, period. A compiler may or may not issue another diagnostic about the accessibility, but the program already has an error that must be reported.
So you can put that deleted definition with whatever accessibility you desire. I think most will keep it private, to be inline with the "old" practice of making a class non-copyable (put the declaration of those members in the private section of the class, and not define them), if only to help those who know the old ways "get it" sooner. A mixture of idioms, if you would.
Marking as private is also something you can't avoid if you need to support both C++03 and C++11 mode. With the help of a macro, a header can be made to conform to both standards easily:
#if __cplusplus >= 201103L
#define DELETED_DEFINITION = delete
#else
#define DELETED_DEFINITION
#endif
class noncopyable
private:
// This header can be compiled as both C++11 and C++03
noncopyable(noncopyable const&) DELETED_DEFINITION;
void operator=(noncopyable const&) DELETED_DEFINITION;
;
If you want backwards compatibility then this is a must.
– Lightness Races in Orbit
6 hours ago
add a comment |
Does where we put the deleted definition make any difference?
From a pure language standpoint it makes absolutely zero difference. Name lookup and overload resolution happen before access checking. And attempting to refer to a deleted function at the end of overload resolution makes your program ill-formed, period. A compiler may or may not issue another diagnostic about the accessibility, but the program already has an error that must be reported.
So you can put that deleted definition with whatever accessibility you desire. I think most will keep it private, to be inline with the "old" practice of making a class non-copyable (put the declaration of those members in the private section of the class, and not define them), if only to help those who know the old ways "get it" sooner. A mixture of idioms, if you would.
Marking as private is also something you can't avoid if you need to support both C++03 and C++11 mode. With the help of a macro, a header can be made to conform to both standards easily:
#if __cplusplus >= 201103L
#define DELETED_DEFINITION = delete
#else
#define DELETED_DEFINITION
#endif
class noncopyable
private:
// This header can be compiled as both C++11 and C++03
noncopyable(noncopyable const&) DELETED_DEFINITION;
void operator=(noncopyable const&) DELETED_DEFINITION;
;
If you want backwards compatibility then this is a must.
– Lightness Races in Orbit
6 hours ago
add a comment |
Does where we put the deleted definition make any difference?
From a pure language standpoint it makes absolutely zero difference. Name lookup and overload resolution happen before access checking. And attempting to refer to a deleted function at the end of overload resolution makes your program ill-formed, period. A compiler may or may not issue another diagnostic about the accessibility, but the program already has an error that must be reported.
So you can put that deleted definition with whatever accessibility you desire. I think most will keep it private, to be inline with the "old" practice of making a class non-copyable (put the declaration of those members in the private section of the class, and not define them), if only to help those who know the old ways "get it" sooner. A mixture of idioms, if you would.
Marking as private is also something you can't avoid if you need to support both C++03 and C++11 mode. With the help of a macro, a header can be made to conform to both standards easily:
#if __cplusplus >= 201103L
#define DELETED_DEFINITION = delete
#else
#define DELETED_DEFINITION
#endif
class noncopyable
private:
// This header can be compiled as both C++11 and C++03
noncopyable(noncopyable const&) DELETED_DEFINITION;
void operator=(noncopyable const&) DELETED_DEFINITION;
;
Does where we put the deleted definition make any difference?
From a pure language standpoint it makes absolutely zero difference. Name lookup and overload resolution happen before access checking. And attempting to refer to a deleted function at the end of overload resolution makes your program ill-formed, period. A compiler may or may not issue another diagnostic about the accessibility, but the program already has an error that must be reported.
So you can put that deleted definition with whatever accessibility you desire. I think most will keep it private, to be inline with the "old" practice of making a class non-copyable (put the declaration of those members in the private section of the class, and not define them), if only to help those who know the old ways "get it" sooner. A mixture of idioms, if you would.
Marking as private is also something you can't avoid if you need to support both C++03 and C++11 mode. With the help of a macro, a header can be made to conform to both standards easily:
#if __cplusplus >= 201103L
#define DELETED_DEFINITION = delete
#else
#define DELETED_DEFINITION
#endif
class noncopyable
private:
// This header can be compiled as both C++11 and C++03
noncopyable(noncopyable const&) DELETED_DEFINITION;
void operator=(noncopyable const&) DELETED_DEFINITION;
;
edited 5 hours ago
answered 12 hours ago
StoryTellerStoryTeller
102k12215279
102k12215279
If you want backwards compatibility then this is a must.
– Lightness Races in Orbit
6 hours ago
add a comment |
If you want backwards compatibility then this is a must.
– Lightness Races in Orbit
6 hours ago
If you want backwards compatibility then this is a must.
– Lightness Races in Orbit
6 hours ago
If you want backwards compatibility then this is a must.
– Lightness Races in Orbit
6 hours ago
add a comment |
From Scott Meyers's book, Effective Modern C++ (Item 10), it seems that it is better to define them as public:
By convention, deleted functions are declared public, not private.
There’s a reason for that. When client code tries to use a member
function, C++ checks accessibility before deleted status. When client
code tries to use a deleted private function, some compilers complain
only about the function being private, even though the function’s
accessibility doesn’t really affect whether it can be used. It’s worth
bearing this in mind when revising legacy code to replace
private-and-not-defined member functions with deleted ones, because
making the new functions public will generally result in better error
messages.
Meyers contradicts StoryTeller's answer, and my tests. It's still good advice, but I find einpoklum's reasoning to be superior.
– Lightness Races in Orbit
1 hour ago
add a comment |
From Scott Meyers's book, Effective Modern C++ (Item 10), it seems that it is better to define them as public:
By convention, deleted functions are declared public, not private.
There’s a reason for that. When client code tries to use a member
function, C++ checks accessibility before deleted status. When client
code tries to use a deleted private function, some compilers complain
only about the function being private, even though the function’s
accessibility doesn’t really affect whether it can be used. It’s worth
bearing this in mind when revising legacy code to replace
private-and-not-defined member functions with deleted ones, because
making the new functions public will generally result in better error
messages.
Meyers contradicts StoryTeller's answer, and my tests. It's still good advice, but I find einpoklum's reasoning to be superior.
– Lightness Races in Orbit
1 hour ago
add a comment |
From Scott Meyers's book, Effective Modern C++ (Item 10), it seems that it is better to define them as public:
By convention, deleted functions are declared public, not private.
There’s a reason for that. When client code tries to use a member
function, C++ checks accessibility before deleted status. When client
code tries to use a deleted private function, some compilers complain
only about the function being private, even though the function’s
accessibility doesn’t really affect whether it can be used. It’s worth
bearing this in mind when revising legacy code to replace
private-and-not-defined member functions with deleted ones, because
making the new functions public will generally result in better error
messages.
From Scott Meyers's book, Effective Modern C++ (Item 10), it seems that it is better to define them as public:
By convention, deleted functions are declared public, not private.
There’s a reason for that. When client code tries to use a member
function, C++ checks accessibility before deleted status. When client
code tries to use a deleted private function, some compilers complain
only about the function being private, even though the function’s
accessibility doesn’t really affect whether it can be used. It’s worth
bearing this in mind when revising legacy code to replace
private-and-not-defined member functions with deleted ones, because
making the new functions public will generally result in better error
messages.
edited 1 hour ago
Lightness Races in Orbit
293k54476809
293k54476809
answered 1 hour ago
hsalimihsalimi
4,63022350
4,63022350
Meyers contradicts StoryTeller's answer, and my tests. It's still good advice, but I find einpoklum's reasoning to be superior.
– Lightness Races in Orbit
1 hour ago
add a comment |
Meyers contradicts StoryTeller's answer, and my tests. It's still good advice, but I find einpoklum's reasoning to be superior.
– Lightness Races in Orbit
1 hour ago
Meyers contradicts StoryTeller's answer, and my tests. It's still good advice, but I find einpoklum's reasoning to be superior.
– Lightness Races in Orbit
1 hour ago
Meyers contradicts StoryTeller's answer, and my tests. It's still good advice, but I find einpoklum's reasoning to be superior.
– Lightness Races in Orbit
1 hour ago
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55205874%2fdeletion-of-copy-ctor-copy-assignment-public-private-or-protected%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
If you throw your old shoes away, do you think about where to store them?
– Klaus
13 hours ago
10
@Klaus: No, but you think about where to throw them...
– einpoklum
11 hours ago