Существует ли стандартная конструкция для выбора«? - PullRequest
3 голосов
/ 18 июня 2011

Иногда я нуждаюсь в следующем:

template<bool B, typename T1, typename T2>
struct choose{
  typedef T1 type;
};

template<typename T1, typename T2>
struct choose<false, T1, T2>{
  typedef T2 type;
};

Я использую это для условного выбора одного типа или другого.Теперь, есть ли что-то в стандартной библиотеке, которая делает именно это? Boost.MPL имеет нечто похожее , но это не совсем то же самое (принимает тип, а не bool), и я не хочу включать Boost для этой мелочи.:)

1 Ответ

6 голосов
/ 18 июня 2011

Да: он называется std::conditional в C ++ 0x (или boost::conditional в Boost).

Цитируемый boost::mpl::if имеет соответствующий boost::mpl::if_c, который принимает boolвместо типа;это общий шаблон в библиотеках признаков типа Boost.

...