Closed fuhlig1 closed 1 month ago
When I try to compile the test suite on Debain 12 with gcc (Debian 12.2.0-14) 12.2.0 I get the following error
CXX=g++ make gnu++23: test extensions (-Wall -Wextra -Wpedantic -Wno-attributes -Wno-unknown-pragmas -Wno-psabi -I/home/cbm/vir-simd) vir/test.cpp:110:12: error: non-constant condition for static assertion 110 | all_equal(vir::simd_permute(make_simd(0, 1, 2, 3, 4, 5), vir::simd_permutations::swap_neighbors<3>), | ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 111 | make_simd(3, 4, 5, 0, 1, 2))); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /home/cbm/vir-simd/vir/simdize.h:19, from vir/test.cpp:7: vir/test.cpp:111:35: in ‘constexpr’ expansion of ‘vir::simd_permute(const V&, F) [with long unsigned int N = 0; V = std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >; F = simd_permutations::SwapNeighbors<3>; std::experimental::parallelism_v2::resize_simd_t<((N == 0) ? V::size() : N), V> = std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >]((vir::simd_permutations::swap_neighbors<3>, const vir::simd_permutations::SwapNeighbors<3>()))’ vir/test.cpp:111:35: in ‘constexpr’ expansion of ‘std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >(<lambda closure object>vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>{idx_perm, (* & v)}, 0)’ /usr/include/c++/12/experimental/bits/simd.h:5181:36: in ‘constexpr’ expansion of ‘std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>((* & __gen), ((int*)std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >::_S_type_tag))’ /usr/include/c++/12/experimental/bits/simd_fixed_size.h:1299:38: in ‘constexpr’ expansion of ‘std::experimental::parallelism_v2::_SimdTuple<int, std::experimental::parallelism_v2::simd_abi::_VecBuiltin<16>, std::experimental::parallelism_v2::simd_abi::_VecBuiltin<8> >::_S_generate<>(<lambda closure object>std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>{(* & __gen)}, (std::experimental::parallelism_v2::_SizeConstant<0>(), std::experimental::parallelism_v2::_SizeConstant<0>()))’ /usr/include/c++/12/experimental/bits/simd_fixed_size.h:404:24: in ‘constexpr’ expansion of ‘(& __gen)->std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>(std::experimental::parallelism_v2::__tuple_element_meta<int, std::experimental::parallelism_v2::simd_abi::_VecBuiltin<16>, 0>{std::experimental::parallelism_v2::_SimdImplX86<std::experimental::parallelism_v2::simd_abi::_VecBuiltin<16>, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >()})’ /usr/include/c++/12/experimental/bits/simd_fixed_size.h:1305:21: in ‘constexpr’ expansion of ‘std::experimental::parallelism_v2::_SimdImplBuiltin<std::experimental::parallelism_v2::simd_abi::_VecBuiltin<16>, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>, int>(<lambda closure object>std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>{(* & __gen), __meta}, 0)’ /usr/include/c++/12/experimental/bits/simd_builtin.h:1437:50: in ‘constexpr’ expansion of ‘std::experimental::parallelism_v2::__generate_vector<int, 4, _SimdImplBuiltin<simd_abi::_VecBuiltin<16>, __detail::_MachineFlagsTemplate<7, 9> >::_S_generator<std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>, int>(std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>&&, _TypeTag<int>)::<lambda(auto:764)> >(<lambda closure object>std::experimental::parallelism_v2::_SimdImplBuiltin<std::experimental::parallelism_v2::simd_abi::_VecBuiltin<16>, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>, int>(std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>&&, _TypeTag<int>)::<lambda(auto:764)>{(* & __gen)})’ /usr/include/c++/12/experimental/bits/simd.h:1833:44: in ‘constexpr’ expansion of ‘std::experimental::parallelism_v2::__generate_vector_impl<int, 4, _SimdImplBuiltin<simd_abi::_VecBuiltin<16>, __detail::_MachineFlagsTemplate<7, 9> >::_S_generator<std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>, int>(std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>&&, _TypeTag<int>)::<lambda(auto:764)>, 0, 1, 2, 3>((* & __gen), (std::make_index_sequence<4>(), std::make_index_sequence<4>()))’ /usr/include/c++/12/experimental/bits/simd.h:1811:29: in ‘constexpr’ expansion of ‘(& __gen)->std::experimental::parallelism_v2::_SimdImplBuiltin<std::experimental::parallelism_v2::simd_abi::_VecBuiltin<16>, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>, int>(std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>&&, _TypeTag<int>)::<lambda(auto:764)>((std::experimental::parallelism_v2::_SizeConstant<0>(), std::experimental::parallelism_v2::_SizeConstant<0>()))’ /usr/include/c++/12/experimental/bits/simd_builtin.h:1440:18: in ‘constexpr’ expansion of ‘(& __gen)->std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>((__i, std::integral_constant<long unsigned int, 0>()))’ /usr/include/c++/12/experimental/bits/simd_fixed_size.h:1302:32: in ‘constexpr’ expansion of ‘(& __gen)->vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>((std::experimental::parallelism_v2::_SizeConstant<0>(), std::experimental::parallelism_v2::_SizeConstant<0>()))’ /home/cbm/vir-simd/vir/simd_permute.h:229:28: error: ‘constexpr std::experimental::parallelism_v2::simd<_Tp, _Abi>::value_type std::experimental::parallelism_v2::simd<_Tp, _Abi>::operator[](std::size_t) const [with _Tp = int; _Abi = std::experimental::parallelism_v2::simd_abi::_Fixed<6>; value_type = int; std::size_t = long unsigned int]’ called in a constant expression 229 | return v[j]; | ~^ In file included from /usr/include/c++/12/experimental/simd:72, from /home/cbm/vir-simd/vir/simd.h:14, from vir/test.cpp:6: vir/test.cpp:111:35: in ‘constexpr’ expansion of ‘vir::simd_permute(const V&, F) [with long unsigned int N = 0; V = std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >; F = simd_permutations::SwapNeighbors<3>; std::experimental::parallelism_v2::resize_simd_t<((N == 0) ? V::size() : N), V> = std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >]((vir::simd_permutations::swap_neighbors<3>, const vir::simd_permutations::SwapNeighbors<3>()))’ vir/test.cpp:111:35: in ‘constexpr’ expansion of ‘std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >(<lambda closure object>vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>{idx_perm, (* & v)}, 0)’ /usr/include/c++/12/experimental/bits/simd.h:5181:36: in ‘constexpr’ expansion of ‘std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>((* & __gen), ((int*)std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >::_S_type_tag))’ /usr/include/c++/12/experimental/bits/simd_fixed_size.h:1299:38: in ‘constexpr’ expansion of ‘std::experimental::parallelism_v2::_SimdTuple<int, std::experimental::parallelism_v2::simd_abi::_VecBuiltin<16>, std::experimental::parallelism_v2::simd_abi::_VecBuiltin<8> >::_S_generate<>(<lambda closure object>std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>{(* & __gen)}, (std::experimental::parallelism_v2::_SizeConstant<0>(), std::experimental::parallelism_v2::_SizeConstant<0>()))’ /usr/include/c++/12/experimental/bits/simd_fixed_size.h:404:24: in ‘constexpr’ expansion of ‘(& __gen)->std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>(std::experimental::parallelism_v2::__tuple_element_meta<int, std::experimental::parallelism_v2::simd_abi::_VecBuiltin<16>, 0>{std::experimental::parallelism_v2::_SimdImplX86<std::experimental::parallelism_v2::simd_abi::_VecBuiltin<16>, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >()})’ /usr/include/c++/12/experimental/bits/simd_fixed_size.h:1305:21: in ‘constexpr’ expansion of ‘std::experimental::parallelism_v2::_SimdImplBuiltin<std::experimental::parallelism_v2::simd_abi::_VecBuiltin<16>, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>, int>(<lambda closure object>std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>{(* & __gen), __meta}, 0)’ /usr/include/c++/12/experimental/bits/simd_builtin.h:1437:50: in ‘constexpr’ expansion of ‘std::experimental::parallelism_v2::__generate_vector<int, 4, _SimdImplBuiltin<simd_abi::_VecBuiltin<16>, __detail::_MachineFlagsTemplate<7, 9> >::_S_generator<std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>, int>(std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>&&, _TypeTag<int>)::<lambda(auto:764)> >(<lambda closure object>std::experimental::parallelism_v2::_SimdImplBuiltin<std::experimental::parallelism_v2::simd_abi::_VecBuiltin<16>, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>, int>(std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>&&, _TypeTag<int>)::<lambda(auto:764)>{(* & __gen)})’ /usr/include/c++/12/experimental/bits/simd.h:1833:44: in ‘constexpr’ expansion of ‘std::experimental::parallelism_v2::__generate_vector_impl<int, 4, _SimdImplBuiltin<simd_abi::_VecBuiltin<16>, __detail::_MachineFlagsTemplate<7, 9> >::_S_generator<std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>, int>(std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>&&, _TypeTag<int>)::<lambda(auto:764)>, 0, 1, 2, 3>((* & __gen), (std::make_index_sequence<4>(), std::make_index_sequence<4>()))’ /usr/include/c++/12/experimental/bits/simd.h:1811:29: in ‘constexpr’ expansion of ‘(& __gen)->std::experimental::parallelism_v2::_SimdImplBuiltin<std::experimental::parallelism_v2::simd_abi::_VecBuiltin<16>, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>, int>(std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>&&, _TypeTag<int>)::<lambda(auto:764)>((std::experimental::parallelism_v2::_SizeConstant<0>(), std::experimental::parallelism_v2::_SizeConstant<0>()))’ /usr/include/c++/12/experimental/bits/simd_builtin.h:1440:18: in ‘constexpr’ expansion of ‘(& __gen)->std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>((__i, std::integral_constant<long unsigned int, 0>()))’ /usr/include/c++/12/experimental/bits/simd_fixed_size.h:1302:32: in ‘constexpr’ expansion of ‘(& __gen)->vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>((std::experimental::parallelism_v2::_SizeConstant<0>(), std::experimental::parallelism_v2::_SizeConstant<0>()))’ /usr/include/c++/12/experimental/bits/simd.h:5215:5: note: ‘constexpr std::experimental::parallelism_v2::simd<_Tp, _Abi>::value_type std::experimental::parallelism_v2::simd<_Tp, _Abi>::operator[](std::size_t) const [with _Tp = int; _Abi = std::experimental::parallelism_v2::simd_abi::_Fixed<6>; value_type = int; std::size_t = long unsigned int]’ is not usable as a ‘constexpr’ function because: 5215 | operator[]([[maybe_unused]] size_t __i) const | ^~~~~~~~ vir/test.cpp:111:35: in ‘constexpr’ expansion of ‘vir::simd_permute(const V&, F) [with long unsigned int N = 0; V = std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >; F = simd_permutations::SwapNeighbors<3>; std::experimental::parallelism_v2::resize_simd_t<((N == 0) ? V::size() : N), V> = std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >]((vir::simd_permutations::swap_neighbors<3>, const vir::simd_permutations::SwapNeighbors<3>()))’ vir/test.cpp:111:35: in ‘constexpr’ expansion of ‘std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >(<lambda closure object>vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>{idx_perm, (* & v)}, 0)’ /usr/include/c++/12/experimental/bits/simd.h:5181:36: in ‘constexpr’ expansion of ‘std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>((* & __gen), ((int*)std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >::_S_type_tag))’ /usr/include/c++/12/experimental/bits/simd_fixed_size.h:1299:38: in ‘constexpr’ expansion of ‘std::experimental::parallelism_v2::_SimdTuple<int, std::experimental::parallelism_v2::simd_abi::_VecBuiltin<16>, std::experimental::parallelism_v2::simd_abi::_VecBuiltin<8> >::_S_generate<>(<lambda closure object>std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>{(* & __gen)}, (std::experimental::parallelism_v2::_SizeConstant<0>(), std::experimental::parallelism_v2::_SizeConstant<0>()))’ /usr/include/c++/12/experimental/bits/simd_fixed_size.h:404:24: in ‘constexpr’ expansion of ‘(& __gen)->std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>(std::experimental::parallelism_v2::__tuple_element_meta<int, std::experimental::parallelism_v2::simd_abi::_VecBuiltin<16>, 0>{std::experimental::parallelism_v2::_SimdImplX86<std::experimental::parallelism_v2::simd_abi::_VecBuiltin<16>, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >()})’ /usr/include/c++/12/experimental/bits/simd_fixed_size.h:1305:21: in ‘constexpr’ expansion of ‘std::experimental::parallelism_v2::_SimdImplBuiltin<std::experimental::parallelism_v2::simd_abi::_VecBuiltin<16>, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>, int>(<lambda closure object>std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>{(* & __gen), __meta}, 0)’ /usr/include/c++/12/experimental/bits/simd_builtin.h:1437:50: in ‘constexpr’ expansion of ‘std::experimental::parallelism_v2::__generate_vector<int, 4, _SimdImplBuiltin<simd_abi::_VecBuiltin<16>, __detail::_MachineFlagsTemplate<7, 9> >::_S_generator<std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>, int>(std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>&&, _TypeTag<int>)::<lambda(auto:764)> >(<lambda closure object>std::experimental::parallelism_v2::_SimdImplBuiltin<std::experimental::parallelism_v2::simd_abi::_VecBuiltin<16>, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>, int>(std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>&&, _TypeTag<int>)::<lambda(auto:764)>{(* & __gen)})’ /usr/include/c++/12/experimental/bits/simd.h:1833:44: in ‘constexpr’ expansion of ‘std::experimental::parallelism_v2::__generate_vector_impl<int, 4, _SimdImplBuiltin<simd_abi::_VecBuiltin<16>, __detail::_MachineFlagsTemplate<7, 9> >::_S_generator<std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>, int>(std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>&&, _TypeTag<int>)::<lambda(auto:764)>, 0, 1, 2, 3>((* & __gen), (std::make_index_sequence<4>(), std::make_index_sequence<4>()))’ /usr/include/c++/12/experimental/bits/simd.h:1811:29: in ‘constexpr’ expansion of ‘(& __gen)->std::experimental::parallelism_v2::_SimdImplBuiltin<std::experimental::parallelism_v2::simd_abi::_VecBuiltin<16>, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>, int>(std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>&&, _TypeTag<int>)::<lambda(auto:764)>((std::experimental::parallelism_v2::_SizeConstant<0>(), std::experimental::parallelism_v2::_SizeConstant<0>()))’ /usr/include/c++/12/experimental/bits/simd_builtin.h:1440:18: in ‘constexpr’ expansion of ‘(& __gen)->std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>((__i, std::integral_constant<long unsigned int, 0>()))’ /usr/include/c++/12/experimental/bits/simd_fixed_size.h:1302:32: in ‘constexpr’ expansion of ‘(& __gen)->vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>((std::experimental::parallelism_v2::_SizeConstant<0>(), std::experimental::parallelism_v2::_SizeConstant<0>()))’ /usr/include/c++/12/experimental/bits/simd.h:5223:23: error: call to non-‘constexpr’ function ‘_Tp std::experimental::parallelism_v2::_SimdTuple<_Tp, _A0, _As ...>::operator[](std::size_t) const [with _Tp = int; _Abi0 = std::experimental::parallelism_v2::simd_abi::_VecBuiltin<16>; _Abis = {std::experimental::parallelism_v2::simd_abi::_VecBuiltin<8>}; std::size_t = long unsigned int]’ 5223 | return _M_data[__i]; | ~~~~~~~^ In file included from /usr/include/c++/12/experimental/simd:73: vir/test.cpp:111:35: in ‘constexpr’ expansion of ‘vir::simd_permute(const V&, F) [with long unsigned int N = 0; V = std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >; F = simd_permutations::SwapNeighbors<3>; std::experimental::parallelism_v2::resize_simd_t<((N == 0) ? V::size() : N), V> = std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >]((vir::simd_permutations::swap_neighbors<3>, const vir::simd_permutations::SwapNeighbors<3>()))’ vir/test.cpp:111:35: in ‘constexpr’ expansion of ‘std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >(<lambda closure object>vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>{idx_perm, (* & v)}, 0)’ /usr/include/c++/12/experimental/bits/simd.h:5181:36: in ‘constexpr’ expansion of ‘std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>((* & __gen), ((int*)std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >::_S_type_tag))’ /usr/include/c++/12/experimental/bits/simd_fixed_size.h:1299:38: in ‘constexpr’ expansion of ‘std::experimental::parallelism_v2::_SimdTuple<int, std::experimental::parallelism_v2::simd_abi::_VecBuiltin<16>, std::experimental::parallelism_v2::simd_abi::_VecBuiltin<8> >::_S_generate<>(<lambda closure object>std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>{(* & __gen)}, (std::experimental::parallelism_v2::_SizeConstant<0>(), std::experimental::parallelism_v2::_SizeConstant<0>()))’ /usr/include/c++/12/experimental/bits/simd_fixed_size.h:404:24: in ‘constexpr’ expansion of ‘(& __gen)->std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>(std::experimental::parallelism_v2::__tuple_element_meta<int, std::experimental::parallelism_v2::simd_abi::_VecBuiltin<16>, 0>{std::experimental::parallelism_v2::_SimdImplX86<std::experimental::parallelism_v2::simd_abi::_VecBuiltin<16>, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >()})’ /usr/include/c++/12/experimental/bits/simd_fixed_size.h:1305:21: in ‘constexpr’ expansion of ‘std::experimental::parallelism_v2::_SimdImplBuiltin<std::experimental::parallelism_v2::simd_abi::_VecBuiltin<16>, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>, int>(<lambda closure object>std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>{(* & __gen), __meta}, 0)’ /usr/include/c++/12/experimental/bits/simd_builtin.h:1437:50: in ‘constexpr’ expansion of ‘std::experimental::parallelism_v2::__generate_vector<int, 4, _SimdImplBuiltin<simd_abi::_VecBuiltin<16>, __detail::_MachineFlagsTemplate<7, 9> >::_S_generator<std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>, int>(std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>&&, _TypeTag<int>)::<lambda(auto:764)> >(<lambda closure object>std::experimental::parallelism_v2::_SimdImplBuiltin<std::experimental::parallelism_v2::simd_abi::_VecBuiltin<16>, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>, int>(std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>&&, _TypeTag<int>)::<lambda(auto:764)>{(* & __gen)})’ /usr/include/c++/12/experimental/bits/simd.h:1833:44: in ‘constexpr’ expansion of ‘std::experimental::parallelism_v2::__generate_vector_impl<int, 4, _SimdImplBuiltin<simd_abi::_VecBuiltin<16>, __detail::_MachineFlagsTemplate<7, 9> >::_S_generator<std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>, int>(std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>&&, _TypeTag<int>)::<lambda(auto:764)>, 0, 1, 2, 3>((* & __gen), (std::make_index_sequence<4>(), std::make_index_sequence<4>()))’ /usr/include/c++/12/experimental/bits/simd.h:1811:29: in ‘constexpr’ expansion of ‘(& __gen)->std::experimental::parallelism_v2::_SimdImplBuiltin<std::experimental::parallelism_v2::simd_abi::_VecBuiltin<16>, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>, int>(std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>&&, _TypeTag<int>)::<lambda(auto:764)>((std::experimental::parallelism_v2::_SizeConstant<0>(), std::experimental::parallelism_v2::_SizeConstant<0>()))’ /usr/include/c++/12/experimental/bits/simd_builtin.h:1440:18: in ‘constexpr’ expansion of ‘(& __gen)->std::experimental::parallelism_v2::_SimdImplFixedSize<6, std::experimental::parallelism_v2::__detail::_MachineFlagsTemplate<7, 9> >::_S_generator<vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>, int>(vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>&&, _TypeTag<int>)::<lambda(auto:89)>::<lambda(auto:90)>((__i, std::integral_constant<long unsigned int, 0>()))’ /usr/include/c++/12/experimental/bits/simd_fixed_size.h:1302:32: in ‘constexpr’ expansion of ‘(& __gen)->vir::simd_permute<>(const std::experimental::parallelism_v2::simd<int, std::experimental::parallelism_v2::simd_abi::_Fixed<6> >&, simd_permutations::SwapNeighbors<3>)::<lambda(auto:892)>((std::experimental::parallelism_v2::_SizeConstant<0>(), std::experimental::parallelism_v2::_SizeConstant<0>()))’ /usr/include/c++/12/experimental/bits/simd_fixed_size.h:595:9: note: ‘_Tp std::experimental::parallelism_v2::_SimdTuple<_Tp, _A0, _As ...>::operator[](std::size_t) const [with _Tp = int; _Abi0 = std::experimental::parallelism_v2::simd_abi::_VecBuiltin<16>; _Abis = {std::experimental::parallelism_v2::simd_abi::_VecBuiltin<8>}; std::size_t = long unsigned int]’ declared here 595 | _Tp operator[](size_t __i) const noexcept | ^~~~~~~~ vir/test.cpp:411:2: error: non-constant condition for static assertion 387 | static_assert([] { | ~~~~ 388 | vir::simdize<Point> p1 = Point{1.f, 1.f, 1.f}; | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 389 | vir::simdize<Point> p2 {V<float>([](short i) { return i; }), | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 390 | V<float>([](short i) { return i; }), | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 391 | V<float>([](short i) { return i; })}; | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 392 | vir::simdize<Point> p3 {V<float>([](short i) { return i + 1; }), | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 393 | V<float>([](short i) { return i + 1; }), | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 394 | V<float>([](short i) { return i + 1; })}; | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 395 | { | ~ 396 | auto p = p1 + p2; | ~~~~~~~~~~~~~~~~~ 397 | if (any_of(p != p3)) | ~~~~~~~~~~~~~~~~~~~~ 398 | return false; | ~~~~~~~~~~~~~ 399 | } | ~ 400 | { | ~ 401 | auto p = Point{1.f, 1.f, 1.f} + p2; | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 402 | if (any_of(p != p3)) | ~~~~~~~~~~~~~~~~~~~~ 403 | return false; | ~~~~~~~~~~~~~ 404 | } | ~ 405 | { | ~ 406 | PointTpl<V<float>> p = p1 + p2; | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 407 | if (any_of(p != p3)) | ~~~~~~~~~~~~~~~~~~~~ 408 | return false; | ~~~~~~~~~~~~~ 409 | } | ~ 410 | return true; | ~~~~~~~~~~~~ 411 | }()); | ~^~ vir/test.cpp:411:2: in ‘constexpr’ expansion of ‘<lambda closure object><lambda()>().<lambda()>()’ vir/test.cpp:397:21: in ‘constexpr’ expansion of ‘vir::operator!=(p, p3)’ /home/cbm/vir-simd/vir/simdize.h:903:24: error: ‘constexpr decltype(auto) operator!=(const PointTpl<std::experimental::parallelism_v2::simd<float, std::experimental::parallelism_v2::simd_abi::_VecBuiltin<16> > >&, const PointTpl<std::experimental::parallelism_v2::simd<float, std::experimental::parallelism_v2::simd_abi::_VecBuiltin<16> > >&)’ called in a constant expression 903 | VIR_OPERATOR_FWD(!=) | ^ /home/cbm/vir-simd/vir/simdize.h:873:36: note: in definition of macro ‘VIR_OPERATOR_FWD’ 873 | a._as_base_type() op b._as_base_type()); \ | ^~ vir/test.cpp:265:3: note: ‘constexpr decltype(auto) operator!=(const PointTpl<std::experimental::parallelism_v2::simd<float, std::experimental::parallelism_v2::simd_abi::_VecBuiltin<16> > >&, const PointTpl<std::experimental::parallelism_v2::simd<float, std::experimental::parallelism_v2::simd_abi::_VecBuiltin<16> > >&)’ is not usable as a ‘constexpr’ function because: 265 | operator!=(PointTpl const& a, PointTpl const& b) | ^~~~~~~~ vir/test.cpp:266:37: error: call to non-‘constexpr’ function ‘std::experimental::parallelism_v2::simd_mask<float, std::experimental::parallelism_v2::simd_abi::_VecBuiltin<16> > std::experimental::parallelism_v2::operator||(const simd_mask<float, simd_abi::_VecBuiltin<16> >&, const simd_mask<float, simd_abi::_VecBuiltin<16> >&)’ 266 | { return a.x != b.x or a.y != b.y or a.z != b.z; } | ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~ /usr/include/c++/12/experimental/bits/simd.h:4635:5: note: ‘std::experimental::parallelism_v2::simd_mask<float, std::experimental::parallelism_v2::simd_abi::_VecBuiltin<16> > std::experimental::parallelism_v2::operator||(const simd_mask<float, simd_abi::_VecBuiltin<16> >&, const simd_mask<float, simd_abi::_VecBuiltin<16> >&)’ declared here 4635 | operator||(const simd_mask& __x, const simd_mask& __y) | ^~~~~~~~ vir/test.cpp:461:2: error: non-constant condition for static assertion 442 | static_assert([] { | ~~~~ 443 | std::array<Point, 5> data = {}; | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 444 | vir::simdize<Point, 4> v(data.begin()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 445 | PointTpl<DV<float, 4>> w = v; | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 446 | if (not all_of(w.x == 0.f and w.y == 0.f and w.z == 0.f)) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 447 | return false; | ~~~~~~~~~~~~~ 448 | v.copy_from(data.begin() + 1); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 449 | w = v; | ~~~~~~ 450 | if (not all_of(w.x == 0.f and w.y == 0.f and w.z == 0.f)) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 451 | return false; | ~~~~~~~~~~~~~ 452 | w.x = 1.f; | ~~~~~~~~~~ 453 | w.y = DV<float, 4>([](float i) { return i; }); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 454 | v = w; | ~~~~~~ 455 | v.copy_to(data.begin()); | ~~~~~~~~~~~~~~~~~~~~~~~~ 456 | if (data != std::array<Point, 5> {Point{1, 0, 0}, {1, 1, 0}, {1, 2, 0}, {1, 3, 0}, {0, 0, 0}}) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 457 | return false; | ~~~~~~~~~~~~~ 458 | v.copy_from(data.begin() + 1); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 459 | v.copy_to(data.begin()); | ~~~~~~~~~~~~~~~~~~~~~~~~ 460 | return data == std::array<Point, 5> {Point{1, 1, 0}, {1, 2, 0}, {1, 3, 0}, {0, 0, 0}, {0, 0, 0}}; | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 461 | }()); | ~^~ vir/test.cpp:461:2: error: ‘<lambda()>’ called in a constant expression vir/test.cpp:442:15: note: ‘<lambda()>’ is not usable as a ‘constexpr’ function because: 442 | static_assert([] { | ^ vir/test.cpp:446:55: error: call to non-‘constexpr’ function ‘std::experimental::parallelism_v2::simd_mask<float, std::experimental::parallelism_v2::simd_abi::_VecBuiltin<16> > std::experimental::parallelism_v2::operator&&(const simd_mask<float, simd_abi::_VecBuiltin<16> >&, const simd_mask<float, simd_abi::_VecBuiltin<16> >&)’ 446 | if (not all_of(w.x == 0.f and w.y == 0.f and w.z == 0.f)) | ^~~ /usr/include/c++/12/experimental/bits/simd.h:4629:5: note: ‘std::experimental::parallelism_v2::simd_mask<float, std::experimental::parallelism_v2::simd_abi::_VecBuiltin<16> > std::experimental::parallelism_v2::operator&&(const simd_mask<float, simd_abi::_VecBuiltin<16> >&, const simd_mask<float, simd_abi::_VecBuiltin<16> >&)’ declared here 4629 | operator&&(const simd_mask& __x, const simd_mask& __y) | ^~~~~~~~
Here commenting 3 of the tests solved the issue. Currently the tests are running. I still don't understand why the commenting is needed.
When I try to compile the test suite on Debain 12 with gcc (Debian 12.2.0-14) 12.2.0 I get the following error