With C++20 we can now use std::is_constant_evaluated, in order to switch from unoptimized but executable by the compiler implementation, to an architecture dependent and optimized version, that the compiler will not be able to execute.
At the same time, make the functionality we have to behave as the std implementations do, and if we have implementations with more features, then keep them as a separated implementation with a different name.
With C++20 we can now use std::is_constant_evaluated, in order to switch from unoptimized but executable by the compiler implementation, to an architecture dependent and optimized version, that the compiler will not be able to execute.
At the same time, make the functionality we have to behave as the std implementations do, and if we have implementations with more features, then keep them as a separated implementation with a different name.