Is there a std::noncopyable (or equivalent)?

No, because there is a standard way to make a class non-copyable:

class MyClass
{
   MyClass(const MyClass&) = delete;
   MyClass& operator=(const MyClass&) = delete;
}:

A class that is non-copyable can however be made movable by overloading a constructor from MyClass&&.

The declaration to make the class non-copyable (above) can be in the public or private section.

If you don't really want to type all that out every time, you can always define a macro something like:

#define NONCOPYABLE(Type) Type(const Type&)=delete; Type& operator=(const Type&)=delete

class MyClass
{
    NONCOPYABLE(MyClass);

    // etc.
};



  

I'm sure you already figured it out by reading CashCow's post, but I thought I might as well provide a base class for noncopyable classes.

class Noncopyable {
public:
    Noncopyable() = default;
    ~Noncopyable() = default;

private:
    Noncopyable(const Noncopyable&) = delete;
    Noncopyable& operator=(const Noncopyable&) = delete;
};