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)
| ^~~~~~~~