Один из способов сделать его не копируемым - просто объявить конструктор копирования, но не реализовывать его вообще. Это приведет к ошибке компоновщика во время компиляции, если кто-то попытается его использовать.
class foo
{
private:
foo(const foo&); // not defined
foo& operator=(const foo&); // not defined
};