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?