Giter Site home page Giter Site logo

alifahrri / nmtools Goto Github PK

View Code? Open in Web Editor NEW
8.0 8.0 0.0 7.69 MB

A generic, composable multi-dimensional array library.

License: MIT License

CMake 1.03% C++ 98.65% Shell 0.18% Dockerfile 0.13% Python 0.01%
cpp17 generic-programming header-only multidimensional-arrays ndarray numpy platformio tensor

nmtools's People

Contributors

alifahrri avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

nmtools's Issues

GCC std::optional error: initializations for multiple members of

std::optional on commit ed7fee5394e25316bc619f6a4414d78fa46965fa errored:

2024-05-23T14:31:24.9138165Z /usr/include/c++/12/optional:207:15: error: initializations for multiple members of 'std::_Optional_payload_base<nmtools::view::decorator_t<nmtools::view::where_t, nmtools::view::decorator_t<nmtools::view::indexing_t, nmtools::view::decorator_t<nmtools::view::ufunc_t, nmtools::view::fun::greater, nmtools::view::decorator_t<nmtools::view::indexing_t, nmtools::view::decorator_t<nmtools::view::where_t, nmtools::view::decorator_t<nmtools::view::indexing_t, nmtools::view::decorator_t<nmtools::view::ufunc_t, nmtools::view::fun::less, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [3][2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > > >, nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [3][2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > > >, nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [1], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 1> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > > >, nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [1], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 1> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, nmtools::view::decorator_t<nmtools::view::where_t, nmtools::view::decorator_t<nmtools::view::indexing_t, nmtools::view::decorator_t<nmtools::view::ufunc_t, nmtools::view::fun::less, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [3][2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > > >, nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [3][2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > > >, nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > > > >::_Storage<nmtools::view::decorator_t<nmtools::view::where_t, nmtools::view::decorator_t<nmtools::view::indexing_t, nmtools::view::decorator_t<nmtools::view::ufunc_t, nmtools::view::fun::greater, nmtools::view::decorator_t<nmtools::view::indexing_t, nmtools::view::decorator_t<nmtools::view::where_t, nmtools::view::decorator_t<nmtools::view::indexing_t, nmtools::view::decorator_t<nmtools::view::ufunc_t, nmtools::view::fun::less, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [3][2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > > >, nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [3][2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > > >, nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [1], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 1> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > > >, nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [1], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 1> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, nmtools::view::decorator_t<nmtools::view::where_t, nmtools::view::decorator_t<nmtools::view::indexing_t, nmtools::view::decorator_t<nmtools::view::ufunc_t, nmtools::view::fun::less, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [3][2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > > >, nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [3][2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > > >, nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > > >, true>'
2024-05-23T14:31:24.9237346Z   207 |         union _Storage
2024-05-23T14:31:24.9237987Z       |               ^~~~~~~~
2024-05-23T14:31:24.9457319Z /usr/include/c++/12/optional:164:7: note: synthesized method 'constexpr std::_Optional_payload_base<nmtools::view::decorator_t<nmtools::view::where_t, nmtools::view::decorator_t<nmtools::view::indexing_t, nmtools::view::decorator_t<nmtools::view::ufunc_t, nmtools::view::fun::greater, nmtools::view::decorator_t<nmtools::view::indexing_t, nmtools::view::decorator_t<nmtools::view::where_t, nmtools::view::decorator_t<nmtools::view::indexing_t, nmtools::view::decorator_t<nmtools::view::ufunc_t, nmtools::view::fun::less, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [3][2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > > >, nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [3][2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > > >, nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [1], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 1> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > > >, nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [1], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 1> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, nmtools::view::decorator_t<nmtools::view::where_t, nmtools::view::decorator_t<nmtools::view::indexing_t, nmtools::view::decorator_t<nmtools::view::ufunc_t, nmtools::view::fun::less, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [3][2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > > >, nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [3][2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > > >, nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > > > >::_Storage<nmtools::view::decorator_t<nmtools::view::where_t, nmtools::view::decorator_t<nmtools::view::indexing_t, nmtools::view::decorator_t<nmtools::view::ufunc_t, nmtools::view::fun::greater, nmtools::view::decorator_t<nmtools::view::indexing_t, nmtools::view::decorator_t<nmtools::view::where_t, nmtools::view::decorator_t<nmtools::view::indexing_t, nmtools::view::decorator_t<nmtools::view::ufunc_t, nmtools::view::fun::less, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [3][2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > > >, nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [3][2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > > >, nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [1], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 1> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > > >, nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [1], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 1> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, nmtools::view::decorator_t<nmtools::view::where_t, nmtools::view::decorator_t<nmtools::view::indexing_t, nmtools::view::decorator_t<nmtools::view::ufunc_t, nmtools::view::fun::less, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [3][2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > > >, nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [3][2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > > >, nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > > >, true>::_Storage(std::_Optional_payload_base<nmtools::view::decorator_t<nmtools::view::where_t, nmtools::view::decorator_t<nmtools::view::indexing_t, nmtools::view::decorator_t<nmtools::view::ufunc_t, nmtools::view::fun::greater, nmtools::view::decorator_t<nmtools::view::indexing_t, nmtools::view::decorator_t<nmtools::view::where_t, nmtools::view::decorator_t<nmtools::view::indexing_t, nmtools::view::decorator_t<nmtools::view::ufunc_t, nmtools::view::fun::less, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [3][2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > > >, nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [3][2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > > >, nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [1], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 1> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > > >, nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [1], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 1> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, nmtools::view::decorator_t<nmtools::view::where_t, nmtools::view::decorator_t<nmtools::view::indexing_t, nmtools::view::decorator_t<nmtools::view::ufunc_t, nmtools::view::fun::less, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [3][2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > > >, nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [3][2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > > >, nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > > > >::_Storage<nmtools::view::decorator_t<nmtools::view::where_t, nmtools::view::decorator_t<nmtools::view::indexing_t, nmtools::view::decorator_t<nmtools::view::ufunc_t, nmtools::view::fun::greater, nmtools::view::decorator_t<nmtools::view::indexing_t, nmtools::view::decorator_t<nmtools::view::where_t, nmtools::view::decorator_t<nmtools::view::indexing_t, nmtools::view::decorator_t<nmtools::view::ufunc_t, nmtools::view::fun::less, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [3][2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > > >, nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [3][2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > > >, nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [1], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 1> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > > >, nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [1], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 1> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, nmtools::view::decorator_t<nmtools::view::where_t, nmtools::view::decorator_t<nmtools::view::indexing_t, nmtools::view::decorator_t<nmtools::view::ufunc_t, nmtools::view::fun::less, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [3][2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > > >, nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > >, nmtools::view::decorator_t<nmtools::view::indexing_t, signed char [3][2], nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > > >, nmtools::view::broadcast_to_t<std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, std::tuple<nmtools::meta::integral_constant<long unsigned int, 3>, nmtools::meta::integral_constant<long unsigned int, 2> >, nmtools::array::hybrid_ndarray<unsigned char, 2, 1>, nmtools::meta::integral_constant<long unsigned int, 6> > > >, true>&&)' first required here
2024-05-23T14:31:24.9651957Z   164 |       _Optional_payload_base(_Optional_payload_base&&) = default;
2024-05-23T14:31:24.9653032Z       |       ^~~~~~~~~~~~~~~~~~~~~~

while it is working fine on clang, and works fine on gcc with NOSTL build:

clean-up cmake

  • make installable
  • easily find package
  • reduce duplication using macro/function

make finite difference to return value instead of taking reference

from

template <size_t order, Formulas formula = Formulas::Centered, typename F, typename Scalar>
        void finite_difference(F &f, Scalar x, Scalar step, Scalar &d)
        {
            detail::finite_difference(detail::Order<order>{}, detail::ComputeType<formula>{}, f, x, step, d);
        }

to

template <size_t order, Formulas formula = Formulas::Centered, typename F, typename Scalar>
        auto finite_difference(F &f, Scalar x, Scalar step)
        {
            return detail::finite_difference(detail::Order<order>{}, detail::ComputeType<formula>{}, f, x, step);
        }

add gauss elimination

  • forward elimination
  • backward substitution
  • naive gauss elimination
  • gauss elimination with pivot & scales

cleanup curvefit

  • make sinusoid to return value instead of taking reference
  • add docs
  • constexpr support

cleanup interpolation module

  • use linalg::tridiagonal for solving spline
  • provide options to return callable instead of directly compute the results
  • clean-up meta functions
  • add linear splne

add inverse

add functional inverse frontend with eigen and armadillo backend

add blas module

  • cleanup matvec, refactor to blas
  • saxpy, gaxpy, dot, outer, in addition to mul and add
  • constexpr support

clang constexpr error: constexpr variable 'result' must be initialized by a constant expression

clang & gcc disagree on contstexpr evaluation:

2024-06-01T09:08:52.7324596Z In file included from /work/tests/index/src/roll.cpp:1:
2024-06-01T09:08:52.7326602Z /work/include/nmtools/array/index/roll.hpp:278:32: error: constexpr variable 'result' must be initialized by a constant expression
2024-06-01T09:08:52.7344845Z                 constexpr auto result  = index::roll(shape,indices,shift,axis_t{});
2024-06-01T09:08:52.7345811Z                                ^         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2024-06-01T09:08:52.7354560Z /work/include/nmtools/meta/transform.hpp:73:5: note: in instantiation of template class 'nmtools::meta::resolve_optype<void, nmtools::index::roll_t, std::tuple<nmtools::meta::integral_constant<unsigned long, 2>, nmtools::meta::integral_constant<unsigned long, 4>>, std::tuple<nmtools::meta::integral_constant<unsigned long, 0>, nmtools::meta::integral_constant<unsigned long, 0>>, nmtools::meta::integral_constant<unsigned long, 1>, std::tuple<nmtools::meta::integral_constant<unsigned long, 1>, nmtools::meta::integral_constant<unsigned long, 0>>>' requested here
2024-06-01T09:08:52.7359228Z     using resolve_optype_t = typename resolve_optype<void,op_t,tparams...>::type;
2024-06-01T09:08:52.7360126Z     ^
2024-06-01T09:08:52.7362036Z /work/include/nmtools/array/index/roll.hpp:68:32: note: in instantiation of template type alias 'resolve_optype_t' requested here
2024-06-01T09:08:52.7363861Z         using result_t = meta::resolve_optype_t<roll_t,shape_t,indices_t,shift_t,axis_t>;
2024-06-01T09:08:52.7364807Z                                ^
2024-06-01T09:08:52.7374728Z /work/tests/index/src/roll.cpp:294:5: note: in instantiation of function template specialization 'nmtools::index::roll<std::tuple<nmtools::meta::integral_constant<unsigned long, 2>, nmtools::meta::integral_constant<unsigned long, 4>>, std::tuple<nmtools::meta::integral_constant<unsigned long, 0>, nmtools::meta::integral_constant<unsigned long, 0>>, nmtools::meta::integral_constant<unsigned long, 1>, std::tuple<nmtools::meta::integral_constant<unsigned long, 1>, nmtools::meta::integral_constant<unsigned long, 0>>>' requested here
2024-06-01T09:08:52.7380034Z     ROLL_SUBCASE( case2d1, shape_ct, indices_ct, shift_ct, axis_ct );
2024-06-01T09:08:52.7380837Z     ^
2024-06-01T09:08:52.7381715Z /work/tests/index/src/roll.cpp:12:35: note: expanded from macro 'ROLL_SUBCASE'
2024-06-01T09:08:52.7382794Z     auto result = nmtools::index::roll(__VA_ARGS__); \
2024-06-01T09:08:52.7383484Z                                   ^
2024-06-01T09:08:52.7386236Z /work/include/nmtools/array/index/roll.hpp:183:32: note: non-constexpr function 'operator()<unsigned long, std::tuple<nmtools::meta::integral_constant<unsigned long, 1>, nmtools::meta::integral_constant<unsigned long, 0>>>' cannot be used in a constant expression
2024-06-01T09:08:52.7388600Z                 auto m_shift = normalize_length(shift,axis);
2024-06-01T09:08:52.7389246Z                                ^
2024-06-01T09:08:52.7391498Z /work/include/nmtools/array/index/roll.hpp:278:42: note: in call to 'roll(shape, indices, shift, std::tuple<nmtools::meta::integral_constant<unsigned long, 1>, nmtools::meta::integral_constant<unsigned long, 0>>{})'
2024-06-01T09:08:52.7393643Z                 constexpr auto result  = index::roll(shape,indices,shift,axis_t{});
2024-06-01T09:08:52.7394518Z                                          ^
2024-06-01T09:08:52.7395361Z /work/include/nmtools/array/index/roll.hpp:98:37: note: declared here
2024-06-01T09:08:52.7399104Z             auto normalize_length = [](const auto& lhs, const auto& rhs){

success on gcc, but clang rejects

full clang logs (error):
job-logs-clang-index-error.txt
full gcc logs (success):
job-logs-gcc-index-success.txt

commit: cca38c3

compiler error notes: Clang constexpr variable lifetime

clang error: note: read of variable whose lifetime has ended

branch: https://github.com/alifahrri/nmtools/tree/clang-compile-error-constexpr-variable-lifetime

CI log (clang-14)

2022-10-01T13:26:22.6894603Z In file included from /work/tests/meta/array/view/moveaxis.cpp:5:
2022-10-01T13:26:22.6895063Z In file included from /work/include/nmtools/array/view/moveaxis.hpp:4:
2022-10-01T13:26:22.6895649Z In file included from /work/include/nmtools/array/index/argsort.hpp:5:
2022-10-01T13:26:22.6919427Z /work/include/nmtools/array/shape.hpp:242:47: error: non-type template argument is not a constant expression
2022-10-01T13:26:22.6939473Z                     }, nmtools_tuple<meta::ct<(size_t)at(fixed_shape,0)>>{});
2022-10-01T13:26:22.6943928Z                                               ^~~~~~~~~~~~~~~~~~~~~~~~~
2022-10-01T13:26:22.6951885Z /work/include/nmtools/array/view/transpose.hpp:42:50: note: in instantiation of function template specialization 'nmtools::shape<true, nmtools::array::ndarray_t<std::array<float, 12>, std::tuple<nmtools::meta::integral_constant<unsigned long, 1>, nmtools::meta::integral_constant<unsigned long, 2>, nmtools::meta::integral_constant<unsigned long, 6>>>>' requested here
2022-10-01T13:26:22.6956189Z         using src_shape_type = decltype(nmtools::shape</*force_constant_index*/true>(meta::declval<array_t>()));
2022-10-01T13:26:22.6959811Z                                                  ^
2022-10-01T13:26:22.6966252Z /work/include/nmtools/array/view/decorator.hpp:129:26: note: in instantiation of template class 'nmtools::view::transpose_t<nmtools::array::ndarray_t<std::array<float, 12>, std::tuple<nmtools::meta::integral_constant<unsigned long, 1>, nmtools::meta::integral_constant<unsigned long, 2>, nmtools::meta::integral_constant<unsigned long, 6>>>, std::tuple<nmtools::meta::integral_constant<unsigned long, 1>, nmtools::meta::integral_constant<unsigned long, 0>, nmtools::meta::integral_constant<unsigned long, 2>>>' requested here
2022-10-01T13:26:22.6971507Z     struct decorator_t : view_t<Ts...>
2022-10-01T13:26:22.6971763Z                          ^
2022-10-01T13:26:22.6983224Z /work/include/nmtools/array/view/transpose.hpp:100:16: note: in instantiation of template class 'nmtools::view::decorator_t<nmtools::view::transpose_t, nmtools::array::ndarray_t<std::array<float, 12>, std::tuple<nmtools::meta::integral_constant<unsigned long, 1>, nmtools::meta::integral_constant<unsigned long, 2>, nmtools::meta::integral_constant<unsigned long, 6>>>, std::tuple<nmtools::meta::integral_constant<unsigned long, 1>, nmtools::meta::integral_constant<unsigned long, 0>, nmtools::meta::integral_constant<unsigned long, 2>>>' requested here
2022-10-01T13:26:22.6984659Z         return decorator_t<transpose_t,array_t,axes_t>{{array,axes}};
2022-10-01T13:26:22.6984952Z                ^
2022-10-01T13:26:22.6992103Z /work/include/nmtools/array/view/moveaxis.hpp:37:56: note: in instantiation of function template specialization 'nmtools::view::transpose<nmtools::array::ndarray_t<std::array<float, 12>, std::tuple<nmtools::meta::integral_constant<unsigned long, 1>, nmtools::meta::integral_constant<unsigned long, 2>, nmtools::meta::integral_constant<unsigned long, 6>>>, std::tuple<nmtools::meta::integral_constant<unsigned long, 1>, nmtools::meta::integral_constant<unsigned long, 0>, nmtools::meta::integral_constant<unsigned long, 2>>>' requested here
2022-10-01T13:26:22.6994480Z         using result_t = meta::remove_cvref_t<decltype(transpose(array,*order))>;
2022-10-01T13:26:22.6995209Z                                                        ^
2022-10-01T13:26:22.7005677Z /work/tests/meta/array/view/moveaxis.cpp:54:44: note: in instantiation of function template specialization 'nmtools::view::moveaxis<nmtools::array::ndarray_t<std::array<float, 12>, std::tuple<nmtools::meta::integral_constant<unsigned long, 1>, nmtools::meta::integral_constant<unsigned long, 2>, nmtools::meta::integral_constant<unsigned long, 6>>>, nmtools::meta::integral_constant<unsigned long, 0>, nmtools::meta::integral_constant<unsigned long, 1>>' requested here
2022-10-01T13:26:22.7006825Z         using view_type   = decltype(view::moveaxis(meta::declval<array_type>(),meta::declval<src_type>(),meta::declval<dst_type>()));
2022-10-01T13:26:22.7008561Z                                            ^
2022-10-01T13:26:22.7013855Z /work/include/nmtools/array/shape.hpp:242:55: note: read of variable whose lifetime has ended
2022-10-01T13:26:22.7015592Z                     }, nmtools_tuple<meta::ct<(size_t)at(fixed_shape,0)>>{});
2022-10-01T13:26:22.7017908Z                                                       ^

works fine on gcc

related code: https://github.com/alifahrri/nmtools/blob/clang-compile-error-constexpr-variable-lifetime/include/nmtools/array/shape.hpp#L236

                constexpr auto fixed_shape = meta::fixed_shape_v<array_t>;
                if constexpr (!meta::is_fail_v<decltype(fixed_shape)>) {
                    return meta::template_reduce<len(fixed_shape)-1>([&](auto init, auto index){
                        using init_type = decltype(init);
                        using type = meta::append_type_t<init_type,meta::ct<(size_t)at(fixed_shape,index+1)>>;
                        return type{};
                    }, nmtools_tuple<meta::ct<(size_t)at(fixed_shape,0)>>{});
                } else {
                    return impl::shape<array_t>(array);
                }

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.