Функция случайного выбора с использованием вариативных шаблонов - возможно ли?

Я бы хотел использовать 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 и т. Д. Можно ли также использовать вариативные шаблоны для создания функций, описанных выше? Любые советы приветствуются!

11
задан s-v 9 November 2011 в 23:02
поделиться