diff --git a/.github/workflows/macos-linux-conda.yml b/.github/workflows/macos-linux-conda.yml
index 9d87ed95f950d568c0700f19e446ceada073ac8a..e4821726115e405ec5784ef314c13018abfae127 100644
--- a/.github/workflows/macos-linux-conda.yml
+++ b/.github/workflows/macos-linux-conda.yml
@@ -102,7 +102,7 @@ jobs:
           -DGENERATE_PYTHON_STUBS=ON \
           -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \
           -DCMAKE_CXX_FLAGS=${{ matrix.cxx_options }}
-        cmake --build . -j4
+        cmake --build . -j3
         ctest --output-on-failure
         cmake --install .
 
diff --git a/.github/workflows/windows-conda.yml b/.github/workflows/windows-conda.yml
index 81a4da77f9d33d2ebc3d3543c946c3c9789c5d1a..150edd51ae160928bcbe66fbbd2e3dd44069d41a 100644
--- a/.github/workflows/windows-conda.yml
+++ b/.github/workflows/windows-conda.yml
@@ -79,7 +79,7 @@ jobs:
         if errorlevel 1 exit 1
 
         :: Build
-        cmake --build . -j4
+        cmake --build . -j3
         if errorlevel 1 exit 1
 
         :: Testing
diff --git a/CHANGELOG.md b/CHANGELOG.md
index cf92a3532b8ddf19569d05e340fc75f3acec61fd..b47eac1f70ba3a462209ebd7706ce2c28cdb1a1c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
 
 ## [Unreleased]
 
+### Fixed
+- Allow EigenToPy/EigenFromPy specialization with CL compiler ([#462](https://github.com/stack-of-tasks/eigenpy/pull/462))
+
 ## [3.5.0] - 2024-04-14
 
 ### Added
diff --git a/include/eigenpy/eigen-from-python.hpp b/include/eigenpy/eigen-from-python.hpp
index 904c2dd9c8eb5ffd1e6e0624a8b4e75635ef5961..80cc582d35af885662034f685c659a3d7425098d 100644
--- a/include/eigenpy/eigen-from-python.hpp
+++ b/include/eigenpy/eigen-from-python.hpp
@@ -290,16 +290,10 @@ struct eigen_from_py_impl<MatType, Eigen::MatrixBase<MatType> > {
   static void registration();
 };
 
-#ifdef EIGENPY_MSVC_COMPILER
-template <typename EigenType>
-struct EigenFromPy<EigenType,
-                   typename boost::remove_reference<EigenType>::type::Scalar>
-#else
-template <typename EigenType, typename _Scalar>
-struct EigenFromPy
-#endif
-    : eigen_from_py_impl<EigenType> {
-};
+template <typename EigenType,
+          typename Scalar =
+              typename boost::remove_reference<EigenType>::type::Scalar>
+struct EigenFromPy : eigen_from_py_impl<EigenType> {};
 
 template <typename MatType>
 void *eigen_from_py_impl<MatType, Eigen::MatrixBase<MatType> >::convertible(
diff --git a/include/eigenpy/eigen-to-python.hpp b/include/eigenpy/eigen-to-python.hpp
index e6c4c14086e232f8e2bae0239bcf960c899ee0d1..529883049ebe6b201619ee4ee4ea2b896a8ed6e5 100644
--- a/include/eigenpy/eigen-to-python.hpp
+++ b/include/eigenpy/eigen-to-python.hpp
@@ -16,51 +16,6 @@
 #include "eigenpy/scipy-type.hpp"
 #include "eigenpy/registration.hpp"
 
-namespace boost {
-namespace python {
-
-template <typename MatrixRef, class MakeHolder>
-struct to_python_indirect_eigen {
-  template <class U>
-  inline PyObject* operator()(U const& mat) const {
-    return eigenpy::EigenToPy<MatrixRef>::convert(const_cast<U&>(mat));
-  }
-
-#ifndef BOOST_PYTHON_NO_PY_SIGNATURES
-  inline PyTypeObject const* get_pytype() const {
-    return converter::registered_pytype<MatrixRef>::get_pytype();
-  }
-#endif
-};
-
-template <typename Scalar, int RowsAtCompileTime, int ColsAtCompileTime,
-          int Options, int MaxRowsAtCompileTime, int MaxColsAtCompileTime,
-          class MakeHolder>
-struct to_python_indirect<
-    Eigen::Matrix<Scalar, RowsAtCompileTime, ColsAtCompileTime, Options,
-                  MaxRowsAtCompileTime, MaxColsAtCompileTime>&,
-    MakeHolder>
-    : to_python_indirect_eigen<
-          Eigen::Matrix<Scalar, RowsAtCompileTime, ColsAtCompileTime, Options,
-                        MaxRowsAtCompileTime, MaxColsAtCompileTime>&,
-          MakeHolder> {};
-
-template <typename Scalar, int RowsAtCompileTime, int ColsAtCompileTime,
-          int Options, int MaxRowsAtCompileTime, int MaxColsAtCompileTime,
-          class MakeHolder>
-struct to_python_indirect<
-    const Eigen::Matrix<Scalar, RowsAtCompileTime, ColsAtCompileTime, Options,
-                        MaxRowsAtCompileTime, MaxColsAtCompileTime>&,
-    MakeHolder>
-    : to_python_indirect_eigen<
-          const Eigen::Matrix<Scalar, RowsAtCompileTime, ColsAtCompileTime,
-                              Options, MaxRowsAtCompileTime,
-                              MaxColsAtCompileTime>&,
-          MakeHolder> {};
-
-}  // namespace python
-}  // namespace boost
-
 namespace eigenpy {
 
 EIGENPY_DOCUMENTATION_START_IGNORE
@@ -202,16 +157,10 @@ struct eigen_to_py_impl_tensor {
 
 EIGENPY_DOCUMENTATION_END_IGNORE
 
-#ifdef EIGENPY_MSVC_COMPILER
-template <typename EigenType>
-struct EigenToPy<EigenType,
-                 typename boost::remove_reference<EigenType>::type::Scalar>
-#else
-template <typename EigenType, typename _Scalar>
-struct EigenToPy
-#endif
-    : eigen_to_py_impl<EigenType> {
-};
+template <typename EigenType,
+          typename Scalar =
+              typename boost::remove_reference<EigenType>::type::Scalar>
+struct EigenToPy : eigen_to_py_impl<EigenType> {};
 
 template <typename MatType>
 struct EigenToPyConverter {
@@ -219,6 +168,52 @@ struct EigenToPyConverter {
     bp::to_python_converter<MatType, EigenToPy<MatType>, true>();
   }
 };
+
 }  // namespace eigenpy
 
+namespace boost {
+namespace python {
+
+template <typename MatrixRef, class MakeHolder>
+struct to_python_indirect_eigen {
+  template <class U>
+  inline PyObject* operator()(U const& mat) const {
+    return eigenpy::EigenToPy<MatrixRef>::convert(const_cast<U&>(mat));
+  }
+
+#ifndef BOOST_PYTHON_NO_PY_SIGNATURES
+  inline PyTypeObject const* get_pytype() const {
+    return converter::registered_pytype<MatrixRef>::get_pytype();
+  }
+#endif
+};
+
+template <typename Scalar, int RowsAtCompileTime, int ColsAtCompileTime,
+          int Options, int MaxRowsAtCompileTime, int MaxColsAtCompileTime,
+          class MakeHolder>
+struct to_python_indirect<
+    Eigen::Matrix<Scalar, RowsAtCompileTime, ColsAtCompileTime, Options,
+                  MaxRowsAtCompileTime, MaxColsAtCompileTime>&,
+    MakeHolder>
+    : to_python_indirect_eigen<
+          Eigen::Matrix<Scalar, RowsAtCompileTime, ColsAtCompileTime, Options,
+                        MaxRowsAtCompileTime, MaxColsAtCompileTime>&,
+          MakeHolder> {};
+
+template <typename Scalar, int RowsAtCompileTime, int ColsAtCompileTime,
+          int Options, int MaxRowsAtCompileTime, int MaxColsAtCompileTime,
+          class MakeHolder>
+struct to_python_indirect<
+    const Eigen::Matrix<Scalar, RowsAtCompileTime, ColsAtCompileTime, Options,
+                        MaxRowsAtCompileTime, MaxColsAtCompileTime>&,
+    MakeHolder>
+    : to_python_indirect_eigen<
+          const Eigen::Matrix<Scalar, RowsAtCompileTime, ColsAtCompileTime,
+                              Options, MaxRowsAtCompileTime,
+                              MaxColsAtCompileTime>&,
+          MakeHolder> {};
+
+}  // namespace python
+}  // namespace boost
+
 #endif  // __eigenpy_eigen_to_python_hpp__
diff --git a/include/eigenpy/fwd.hpp b/include/eigenpy/fwd.hpp
index 7f52949954b42e29335693ac29a544881c8518ae..6aaf67eb2503f563c3dd0b935cdb27ef4d085e1e 100644
--- a/include/eigenpy/fwd.hpp
+++ b/include/eigenpy/fwd.hpp
@@ -125,13 +125,13 @@ namespace bp = boost::python;
 #endif
 
 namespace eigenpy {
-template <typename MatType,
-          typename Scalar =
-              typename boost::remove_reference<MatType>::type::Scalar>
+
+// Default Scalar value can't be defined in the declaration
+// because of a CL bug.
+// See https://github.com/stack-of-tasks/eigenpy/pull/462
+template <typename MatType, typename Scalar>
 struct EigenToPy;
-template <typename MatType,
-          typename Scalar =
-              typename boost::remove_reference<MatType>::type::Scalar>
+template <typename MatType, typename Scalar>
 struct EigenFromPy;
 
 template <typename T>
diff --git a/include/eigenpy/register.hpp b/include/eigenpy/register.hpp
index ba3bb0674c624f3b0da231f881b126adc1932172..5b5055ad27fa6c9d4666408adfcfeb5cc2e4fa4b 100644
--- a/include/eigenpy/register.hpp
+++ b/include/eigenpy/register.hpp
@@ -106,7 +106,7 @@ struct EIGENPY_DLLAPI Register {
   static Register &instance();
 
  private:
-  Register(){};
+  Register() {};
 
   struct Compare_PyTypeObject {
     bool operator()(const PyTypeObject *a, const PyTypeObject *b) const {