Build failure with boost::multiprecision type

Eigen and boost::multiprecision don't play nicely together. At commit fdf2ee62 I get the following build error with the files

.gitmodules:

[submodule "externals/boost-cmake"]
	path = externals/boost-cmake
	url = https://github.com/Orphis/boost-cmake.git
[submodule "externals/eigen"]
	path = externals/eigen
	url = https://gitlab.com/libeigen/eigen.git

CMakeLists.txt:

cmake_minimum_required(VERSION 3.12)
project(boostfail)
set(CMAKE_CXX_STANDARD 17)

add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/externals/boost-cmake")

add_executable(main main.cpp)
target_link_libraries(main Boost::boost)
target_include_directories(main
    PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/externals/eigen"
)

and main.cpp:

#include <iostream>
#include <boost/multiprecision/cpp_complex.hpp>
#include <boost/multiprecision/eigen.hpp>
#include <Eigen/Dense>

int main()
{
   using namespace Eigen;
   typedef boost::multiprecision::cpp_complex_quad complex_type;
   //
   // We want to solve Ax = b for x,
   // define A and b first:
   //
   Matrix<complex_type, 2, 2> A, b;
   A << complex_type(2, 3), complex_type(-1, -2), complex_type(-1, -4), complex_type(3, 6);
   b << 1, 2, 3, 1;
   std::cout << "Here is the matrix A:\n" << A << std::endl;
   std::cout << "Here is the right hand side b:\n" << b << std::endl;
   //
   // Solve for x:
   //
   Matrix<complex_type, 2, 2> x = A.fullPivHouseholderQr().solve(b);
   std::cout << "The solution is:\n" << x << std::endl;
   //
   // Compute the error in the solution by using the norms of Ax - b and b:
   //
   complex_type::value_type relative_error = (A*x - b).norm() / b.norm();
   std::cout << "The relative error is: " << relative_error << std::endl;
   return 0;
}

yielding

(base) PS C:\Users\ian\Code\boostfail\bld> cmake --build . --config Release
CMake is re-running because C:/Users/ian/Code/boostfail/bld/CMakeFiles/generate.stamp is out-of-date.
  the file 'C:/Users/ian/Code/boostfail/CMakeLists.txt'
  is newer than 'C:/Users/ian/Code/boostfail/bld/CMakeFiles/generate.stamp.depend'
  result='-1'
-- Selecting Windows SDK version 10.0.18362.0 to target Windows 10.0.19041.
-- Fetching Boost
-- Fetching Boost - done
-- Boost found: 1.71.0 C:/Users/ian/Code/boostfail/bld/_deps/boost-src
-- Could NOT find BZip2 (missing: BZIP2_LIBRARIES BZIP2_INCLUDE_DIR)
-- The following ICU libraries were not found:
--   uc (required)
--   dt (required)
--   i18n (required)
-- Failed to find all ICU components (missing: ICU_INCLUDE_DIR ICU_LIBRARY _ICU_REQUIRED_LIBS_FOUND)
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/ian/Code/boostfail/bld
Microsoft (R) Build Engine version 16.6.0+5ff7b0c9e for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.

  Checking Build System
  Building Custom Rule C:/Users/ian/Code/boostfail/CMakeLists.txt
  main.cpp
C:\Users\ian\Code\boostfail\bld\_deps\boost-src\boost/multiprecision/eigen.hpp(147,23): error C2977: 'Eigen::internal::conj_impl': too many template arguments [C:\Users\ian\Code\boostfai
l\bld\main.vcxproj]
C:\Users\ian\Code\boostfail\bld\_deps\boost-src\boost/multiprecision/eigen.hpp(147): message : see declaration of 'Eigen::internal::conj_impl' [C:\Users\ian\Code\boostfail\bld\main.vcxpr
oj]
C:\Users\ian\Code\boostfail\bld\_deps\boost-src\boost/multiprecision/eigen.hpp(164,8): error C2977: 'Eigen::internal::conj_impl': too many template arguments [C:\Users\ian\Code\boostfail
\bld\main.vcxproj]
C:\Users\ian\Code\boostfail\bld\_deps\boost-src\boost/multiprecision/eigen.hpp(157): message : see declaration of 'Eigen::internal::conj_impl' [C:\Users\ian\Code\boostfail\bld\main.vcxpr
oj]
C:\Users\ian\Code\boostfail\externals\eigen\Eigen\src/Core/util/Meta.h(454,1): warning C4996: 'std::result_of<T>': warning STL4014: std::result_of and std::result_of_t are deprecated in
C++17. They are superseded by std::invoke_result and std::invoke_result_t. You can define _SILENCE_CXX17_RESULT_OF_DEPRECATION_WARNING or _SILENCE_ALL_CXX17_DEPRECATION_WARNINGS to ackno
wledge that you have received this warning. [C:\Users\ian\Code\boostfail\bld\main.vcxproj]
          with
          [
              T=Eigen::internal::scalar_difference_op<boost::multiprecision::number<boost::multiprecision::backends::complex_adaptor<boost::multiprecision::backends::cpp_bin_float<113,bo
  ost::multiprecision::backends::digit_base_2,void,int16_t,49154,16383>>,boost::multiprecision::et_off>,complex_type> (const boost::multiprecision::number<boost::multiprecision::backends
  ::complex_adaptor<boost::multiprecision::backends::cpp_bin_float<113,boost::multiprecision::backends::digit_base_2,void,int16_t,49154,16383>>,boost::multiprecision::et_off> &,const boo
  st::multiprecision::number<boost::multiprecision::backends::complex_adaptor<boost::multiprecision::backends::cpp_bin_float<113,boost::multiprecision::backends::digit_base_2,void,int16_
  t,49154,16383>>,boost::multiprecision::et_off> &)
          ]
C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.26.28801\include\type_traits(1708,45): message : see declaration of 'std::result_of' [C:\Users\ian\Code\bo
ostfail\bld\main.vcxproj]
C:\Users\ian\Code\boostfail\externals\eigen\Eigen\src/Core/CwiseBinaryOp.h(38): message : see reference to class template instantiation 'Eigen::internal::result_of<BinaryOp (const boost:
:multiprecision::number<boost::multiprecision::backends::complex_adaptor<boost::multiprecision::backends::cpp_bin_float<113,boost::multiprecision::backends::digit_base_2,void,int16_t,491
54,16383>>,boost::multiprecision::et_off> &,const boost::multiprecision::number<boost::multiprecision::backends::complex_adaptor<boost::multiprecision::backends::cpp_bin_float<113,boost:
:multiprecision::backends::digit_base_2,void,int16_t,49154,16383>>,boost::multiprecision::et_off> &)>' being compiled [C:\Users\ian\Code\boostfail\bld\main.vcxproj]
          with
          [
              BinaryOp=Eigen::internal::scalar_difference_op<boost::multiprecision::number<boost::multiprecision::backends::complex_adaptor<boost::multiprecision::backends::cpp_bin_float
  <113,boost::multiprecision::backends::digit_base_2,void,int16_t,49154,16383>>,boost::multiprecision::et_off>,complex_type>
          ]
C:\Users\ian\Code\boostfail\externals\eigen\Eigen\src/Core/CwiseBinaryOp.h(155): message : see reference to class template instantiation 'Eigen::internal::traits<Derived>' being compiled
 [C:\Users\ian\Code\boostfail\bld\main.vcxproj]
          with
          [
              Derived=Eigen::CwiseBinaryOp<Eigen::internal::scalar_difference_op<boost::multiprecision::number<boost::multiprecision::backends::complex_adaptor<boost::multiprecision::bac
  kends::cpp_bin_float<113,boost::multiprecision::backends::digit_base_2,void,int16_t,49154,16383>>,boost::multiprecision::et_off>,complex_type>,const Eigen::Product<Eigen::Matrix<comple
  x_type,2,2,0,2,2>,Eigen::Matrix<complex_type,2,2,0,2,2>,0>,const Eigen::Matrix<complex_type,2,2,0,2,2>>
          ]
C:\Users\ian\Code\boostfail\externals\eigen\Eigen\src/Core/CwiseBinaryOp.h(77): message : see reference to class template instantiation 'Eigen::CwiseBinaryOpImpl<BinaryOp,LhsType,RhsType
,Eigen::internal::cwise_promote_storage_type<Eigen::Dense,Eigen::internal::traits<Derived>::StorageKind,BinaryOp>::ret>' being compiled [C:\Users\ian\Code\boostfail\bld\main.vcxproj]
          with
          [
              BinaryOp=Eigen::internal::scalar_difference_op<boost::multiprecision::number<boost::multiprecision::backends::complex_adaptor<boost::multiprecision::backends::cpp_bin_float
  <113,boost::multiprecision::backends::digit_base_2,void,int16_t,49154,16383>>,boost::multiprecision::et_off>,complex_type>,
              LhsType=Eigen::Product<Eigen::Matrix<complex_type,2,2,0,2,2>,Eigen::Matrix<complex_type,2,2,0,2,2>,0>,
              RhsType=Eigen::Matrix<complex_type,2,2,0,2,2>,
              Derived=Eigen::Matrix<complex_type,2,2,0,2,2>
          ]
C:\Users\ian\Code\boostfail\main.cpp(27): message : see reference to class template instantiation 'Eigen::CwiseBinaryOp<Eigen::internal::scalar_difference_op<boost::multiprecision::numbe
r<boost::multiprecision::backends::complex_adaptor<boost::multiprecision::backends::cpp_bin_float<113,boost::multiprecision::backends::digit_base_2,void,int16_t,49154,16383>>,boost::mult
iprecision::et_off>,_Scalar>,const Derived,const Eigen::Matrix<_Scalar,2,2,0,2,2>>' being compiled [C:\Users\ian\Code\boostfail\bld\main.vcxproj]
          with
          [
              _Scalar=complex_type,
              Derived=Eigen::Product<Eigen::Matrix<complex_type,2,2,0,2,2>,Eigen::Matrix<complex_type,2,2,0,2,2>,0>
          ]
(base) PS C:\Users\ian\Code\boostfail\bld>

Similar problem with g++ 9.3.0 on ubuntu 20.04:

[100%] Building CXX object CMakeFiles/boosteigen.dir/boosteigentest.cpp.o
In file included from /input/boosteigentest.cpp:3:
/bld/_deps/boost-src/boost/multiprecision/eigen.hpp:147:14: error: redeclared with 2 template parameters
  147 |       struct conj_impl;
      |              ^~~~~~~~~
In file included from /input/externals/ChebTools/externals/Eigen/Eigen/Core:164,
                 from /bld/_deps/boost-src/boost/multiprecision/eigen.hpp:10,
                 from /input/boosteigentest.cpp:3:
/input/externals/ChebTools/externals/Eigen/Eigen/src/Core/MathFunctions.h:263:34: note: previous declaration 'template<class Scalar> struct Eigen::internal::conj_impl' used 1 template parameter
  263 | template<typename Scalar> struct conj_impl : conj_default_impl<Scalar> {};
      |                                  ^~~~~~~~~
In file included from /input/boosteigentest.cpp:3:
/bld/_deps/boost-src/boost/multiprecision/eigen.hpp:157:100: error: wrong number of template arguments (2, should be 1)
  157 |       struct conj_impl<boost::multiprecision::detail::expression<tag, Arg1, Arg2, Arg3, Arg4>, true>
      |                                                                                                    ^
In file included from /input/externals/ChebTools/externals/Eigen/Eigen/Core:164,
                 from /bld/_deps/boost-src/boost/multiprecision/eigen.hpp:10,
                 from /input/boosteigentest.cpp:3:
/input/externals/ChebTools/externals/Eigen/Eigen/src/Core/MathFunctions.h:263:34: note: provided for 'template<class Scalar> struct Eigen::internal::conj_impl'
  263 | template<typename Scalar> struct conj_impl : conj_default_impl<Scalar> {};
      |                                  ^~~~~~~~~