Prevent potential ODR in TensorExecutor
diff --git a/unsupported/Eigen/CXX11/src/Tensor/TensorExecutor.h b/unsupported/Eigen/CXX11/src/Tensor/TensorExecutor.h
index f736c23..4f72156 100644
--- a/unsupported/Eigen/CXX11/src/Tensor/TensorExecutor.h
+++ b/unsupported/Eigen/CXX11/src/Tensor/TensorExecutor.h
@@ -82,6 +82,13 @@
  public:
   typedef typename Expression::Index StorageIndex;
 
+  // Including `unsupported/Eigen/CXX11/Tensor` in different translation units
+  // with/without `EIGEN_USE_THREADS` is an ODR violation. If this template
+  // is instantiated with a thread pool device, it means that this header
+  // file was included without defining `EIGEN_USE_THREADS`.
+  static_assert(!std::is_same<Device, ThreadPoolDevice>::value,
+                "You are missing `#define EIGEN_USE_THREADS`");
+
   EIGEN_DEVICE_FUNC
   static EIGEN_STRONG_INLINE void run(const Expression& expr,
                                       const Device& device = Device()) {