mattkretz / vir-simd

improve the usage experience of std::experimental::simd (Parallelism TS 2)
GNU Lesser General Public License v3.0
22 stars 2 forks source link

Compilation error with gcc 12 on Debian 12 #24

Closed fuhlig1 closed 1 month ago

fuhlig1 commented 4 months 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)
      |     ^~~~~~~~
fuhlig1 commented 4 months ago

Here commenting 3 of the tests solved the issue. Currently the tests are running. I still don't understand why the commenting is needed.