Я не очень понимаю, для чего в минимальном воспроизводимом примере макросы, если они только затрудняют поиск проблемы. Если я правильно понимаю, достаточно этого для воспроизведения ошибки, если я сам ничего лишнего не добавил или не убрал случайно:
struct Registry {
inline constexpr static int one() { return 1; }
static constexpr const auto m_value = one();
};
'static constexpr int Registry::one()' called in a constant expression before its definition is complete
Да, логично, я не зашёл так глубоко в отрезании лишнего. Но ещё интересно, откуда такая разница между pair<A, B>(a, b) и pair<A, B>{a, b}