Ты хочешь static_if, которого в C++ в чистом виде нет. constexpr if
это совсем не то, т.к. он неизбежно будет компилировать невыполняющиеся
ветви я сам уже запутался... будет но в случае шаблонов можно
использовать не определённые функции/переменные (прошу носом ткнуть
в стандарт, кто понимает лучше), более того, результат компиляции
может загрязнить имеющие отношение к участвующим типам пространства
имён новыми неожиданными функциями -- помнится кто-то давал здесь ссылку
на прикол с hidden friends
(), которые разворачивались из шаблонов под
неактивной веткой constexpr if и заменяли функции. По нормальному -- только через шаблон (класса/структуры/типа/функции, но в конечном счёте две разные функции), как я выше в теме показал.
http://caxapa.ru/954909?todo=full&hilite=hidden,friend