Suppressing copy and assignment

Is that using a type-bound method or just a module procedure bound to the assignment operator?

use NonCopyable: NonCopyable_type, operator(=)

The expectation that clients will import an assignment operator is fraught with problems. See this discussion: Should we avoid assignment of derived types in robust programs?