Меня смущают преимущества использования типов
bool_<true>
и
bool_<false>
по сравнению с простым использованием const bools в контексте метапрограммирования шаблонов.
Библиотека boost :: mpl явно предпочитает первый подход и определяет вспомогательные функции, такие как and_, or_, для помощи в управлении такими bool_. Условные метафункции, такие как if_, «принимают» bool_ в качестве первого (шаблона) аргумента, но за кулисами «вызывают» метафункцию if_c, которая ожидает (const) bool в качестве первого (шаблона) аргумента.
Каковы аргументы в пользу этого решения?
Заранее благодарим вас за помощь!