Я бы хотел использовать C ++ 11 вариативные шаблоны для достижения обобщенной функции «случайного выбора».
Что-то вроде этого ...
template <typename T>
T randomPicker(T one, T two, T three)
{
int pick = 3 * (rand() / double(RAND_MAX));
switch (pick)
{
case 0:
return one;
case 1:
return two;
default:
return three;
}
}
... за исключением обобщения, позволяющего принимать любое количество параметров (каждый того же типа, что и выше - хотя принимает любой тип в качестве параметра и преобразует выбранный в некоторый конкретный тип T по возвращении также будет приемлемым).
Я понимаю идею использования рекурсии шаблонов для достижения таких вещей, как безопасный тип printf и т. Д. Можно ли также использовать вариативные шаблоны для создания функций, описанных выше? Любые советы приветствуются!