Deletion of copy-ctor & copy-assignment - public, private or protected?

access-modifiers, c++, c++11, deleted-functions

Solution

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` by default. 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.

Problem

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?

Original source