Bug#1135592: xsimd: 14.2.0 breaks control of complex number support
Drew Parsons
dparsons at debian.org
Sun May 3 10:41:03 BST 2026
Source: xsimd
Version: 14.2.0-1
Severity: normal
Control: forwarded -1 https://github.com/xtensor-stack/xsimd/issues/1338
Previously xsimd set the CXX standard conditionally depending on
whether complex number support (from xtl) was provided or not.
xtl requires a more recent CXX standard than xsimd (currently
cxx_std_14 vs cxx_std_17)
In 14.2.0, upstream PR#1279
https://github.com/xtensor-stack/xsimd/issues/1338
hardcoded the lower CXX standard into its cmake config files
(/usr/share/cmake/xsimd/xsimdTargets.cmake)
while also recording complex number support
(set XSIMD_ENABLE_XTL_COMPLEX=1).
If an application (including xsimd's tests run standalone against the
installed package via debian/tests) is configured with
-DENABLE_XTL_COMPLEX=On then /usr/share/cmake/xsimd/xsimdConfig.cmake
finds xtl, which sets cxx_std_17.
But if the application does not explicitly set -DENABLE_XTL_COMPLEX=On
(i.e. does not want to use complex number support), xsimd gives
cxx_std_14, but also accesses xtl's complex numbers because
XSIMD_ENABLE_XTL_COMPLEX=1 is set without finding xtl (which would
activate cxx_std_17).
Failure then occurs due to the standards inconsistency via the
unwanted complex number support,
e.g. debian/tests/xsimd-test
[ 3%] Building CXX object CMakeFiles/test_xsimd.dir/test_api.cpp.o
/usr/bin/c++ -DXSIMD_ENABLE_XTL_COMPLEX=1 -Wunused-parameter -Wextra -Wreorder -std=c++14 -g -fPIC -march=native -O3 -DNDEBUG -MD -MT CMakeFiles/test_xsimd.dir/test_api.cpp.o -MF CMakeFiles/test_xsimd.dir/test_api.cpp.o.d -o CMakeFiles/test_xsimd.dir/test_api.cpp.o -c /projects/mathlibs/build/xsimd/test/test_api.cpp
In file included from /usr/include/xtl/xcomplex.hpp:32,
from /usr/include/xsimd/arch/xsimd_scalar.hpp:26,
from /usr/include/xsimd/xsimd.hpp:18,
from /projects/mathlibs/build/xsimd/test/test_api.cpp:12:
/usr/include/xtl/xtype_traits.hpp:306:40: error: ‘conjunction’ is not a member of ‘std’
306 | constexpr bool xtl_requires = std::conjunction<C...>::value;
| ^~~~~~~~~~~
/usr/include/xtl/xtype_traits.hpp:306:40: note: ‘std::conjunction’ is only available from C++17 onwards
debian/tests/xsimd-test-complex, on the other hand, passes since its
-DENABLE_XTL_COMPLEX=On brings in xtl which activates cxx_std_17.
Issue raised upstream,
https://github.com/xtensor-stack/xsimd/issues/1338
As a workaround I might hard-code xsimd to just require the newer
cxx_std_17 standard that xtl requires.
More information about the debian-science-maintainers
mailing list