Для задания неких условий зависящих от окружения и известных на этапах компиляции (например, на винде стоит использовать винапи, а на линукс этих либ вообще нет), или есть какая-то фича, реализованная в компиляторе только начиная с некоей версии, а тебе нужно собирать и под новую и под старую. А если тебе не повезло и компиль не поддерживает constexpr, то и для задания констант и некоторых вычислений, которые ты хочешь чтобы были сделаны на этапе компиляции, но без шаблонов.