unsupported/Eigen/CXX11/src/Tensor/TensorIntDiv.h violates C++ One Definition Rule

unsupported/Eigen/CXX11/src/Tensor/TensorIntDiv.h defines a bunch of stuff in an unnamed namespace, and then uses that stuff from code outside the unnamed namespace. This means that program that includes that header more than once violates the C++ One Definition Rule.

This causes problems, for example, when using this header from C++ modules, where multiple copies of the header can be visible at once.

Similarly, this file defines operator/ (at the end of the file) as static, meaning that it will not properly be deduplicated across multiple translation units, potentially resulting in ambiguity errors when used with C++ modules.

Edited by Richard Smith