Perhaps this makes for slightly improved clarity of code, and it saves a bit of typing. On the other hand, the compiler starts to output more errors per attempted copy.
So I guess the question now has become a choice between
(1) use boost::noncopyable
(2) write a noncopyable base class using C++11 semantics
(3) use C++11 semantics to delete copy and assignment functions in each noncopyable class
maybe better (and cleaner) approach would be to use =delete only in most base class if you use multiple inheritance.
all derived classes are thus indirecly noncopyable.
otherwise boost::noncopyable is better IMO only for single classes, and only benefit is that you don't have to manualy type =delete;
Don't forget that derived assgnment operators and others may not work as you think they do, they don't call base class operators, move ctors and others!
The following will be hidden in the derived class by implicitly-declared versions (or user-declared versions, if the user declares them):
Default constructor: T()
Copy constructor: T(T const &) (sometimes without const)
Copy-assignment operator: T & operator=(T const &) (sometimes without const)
Move constructor: T(T &&)
Move-assignment operator: T & operator=(T &&)
Now you gotta ask your self what your primary goal is, and according to that you see what is the best approach.
I strongly belive that boost::noncopyable can bring more trouble then benefit in multiple inheritance.