Я считаю, что создание класса, не подлежащего копированию, очень помогает мне с качеством моего кода. Изначально я сделал это с помощью boost :: noncopyable, но обнаружил, что ошибки компилятора VC ++ не так полезны, как с частными членами (двойной щелчок приводит к неправильному месту в коде).
T(T const&);
T& operator=(T const&);
Действительно, это меня очень сильно предупредило. несколько случаев, когда классы не передавались в качестве справочника там, где они должны были быть. Настолько, что я бы очень хотел получить предупреждение даже для классов, что мне просто нужно скопировать конструкцию один раз.
Есть ли хороший способ сделать это? Я думал, например, о том, чтобы оставить два вышеупомянутых метода закрытыми и добавить общедоступный конструктор T (T const &, bool dummy) для вызова, когда я действительно хочу скопировать конструкцию. Или, в качестве альтернативы, сделать два вышеуказанных метода общедоступными и каким-то образом активировать предупреждение компилятора при копировании, подавляя предупреждение там, где я хочу.
Или, может быть, есть лучший способ?