Skip to content

std::construct_at is missing in Android NDK, with C++20 turned on

On master branch, tested on android ndk r23 and r25.

In Core/util/Memory.h, it's only checking EIGEN_COMP_CXXVER. It's a bit ugly but would it be possible to add a check for ANDROID?

/** \internal
 * This wraps C++20's std::construct_at, using placement new instead if it is not available.
 */

#if EIGEN_COMP_CXXVER >= 20
using std::construct_at;
#else
template<class T, class... Args>
EIGEN_DEVICE_FUNC T* construct_at( T* p, Args&&... args )
{
  return ::new (const_cast<void*>(static_cast<const volatile void*>(p)))
    T(std::forward<Args>(args)...);
}
#endif