LINUX.ORG.RU

Параметризация шаблона enum'ом для CT-определения типа

 ,


0

2

Собственно, вопрос изложен в теме. Пусть у меня есть шаблонная функция, параметризованная enum'ом, и в зависимости от конкретного варианта инстанцирования шаблона я хочу создать переменную нужного мне типа.

Если бы варианта было всего два, то, насколько я понимаю, было бы разумно использовать std::conditional, но что, если я хочу compile-time switch вместо тернарного оператора?

Спасибо.

Ответ на: комментарий от annulen

А в чем тогда смысл шаблона, если все равно придется из-за одного, допустим, объявления все переписывать?

WizardOfOz ()
Ответ на: комментарий от WizardOfOz

все переписывать?

Зачем всё? Выносишь создание переменной в отдельную функцию, специализируешь именно её. А в основном коде будет что-то типа:

auto var = create<T>();

DarkEld3r ★★★★★ ()

А вообще, если мне все-таки хочется compile-time switch, то, видимо, надо его просто в constexpr-функцию завернуть?

WizardOfOz ()
Ответ на: комментарий от WizardOfOz

Может я не совсем понял чего хочется, но написать как-то так в плюсах (в D, например, можно) нельзя:

static if a {
   // ...
} else {
    // ...
}
В том смысле, что компилироваться будут обе ветки. Так что только выносить в функцию/структуру.

DarkEld3r ★★★★★ ()
Ответ на: комментарий от DarkEld3r

Александреску предлагал такое, не приняли

annulen ★★★★★ ()
Ответ на: Можно от Stil

О, как раз то, что я имел в виду. Спасибо!

WizardOfOz ()
Ответ на: Можно от Stil

Re: Можно

Можно

Потому я и уточнил, что хочется получить. Да, switch можно, но работать оно будет не точно так же, как при вынесении в отдельные функции.

DarkEld3r ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.