vitor1001
vitor1001
According to the C++ specification, most code manipulating invalid pointers is invalid. Quoting [the spec](https://en.cppreference.com/w/cpp/language/pointer): > Indirection through an invalid pointer value and passing an invalid pointer value to a...
Those still compile in most environments since the symbols get imported transitively, but relying on that is considered a bad practice. It is also necessary to compile MiniZinc with Bazel.
See https://github.com/rapidsai/raft/blob/branch-25.08/cpp/include/raft/thirdparty/mdspan/include/experimental/__p0009_bits/aligned_accessor.hpp. This implementation was adapted from kokkos/mdspan/blob/stable/examples/aligned_accessor/aligned_accessor.cpp. Fixes https://github.com/kokkos/mdspan/issues/412.
I just noticed that Raft is using std::experimental::aligned_accessor in its Kokkos fork in its thirdparty/ subdir [[link](https://github.com/rapidsai/raft/blob/8bd5605f53500b7e3f70579c521fdbfcec6439e5/cpp/include/raft/thirdparty/mdspan/include/experimental/__p0009_bits/aligned_accessor.hpp)]. It builds fine on C++20. It would be very nice to upstream it...
Before this change, empty lists were wrongly parsed as a list with a singleton Null element.
This aligns MiniZinc with the standard behavior of *nix binaries that when a tool expects some directory hierarchy, that must match the reality before following any eventual symlinks, not after....
This class is a base class for each concrete solver, so this follows the best-practice of making its destructor virtual.