Рассмотрим эти перегруженные функции,
void fun(Int2Type<1>) {}
void fun(Int2Type<2>) {}
void fun(Int2Type<3>) {}
void fun(Int2Type<4>) {}
Я хочу назвать их таким образом,
fun(1); // this should call first function
fun(4); // this should call fourth function
Есть ли способ сделать это?Если да, то можем ли мы сделать то же самое с некоторым значением времени выполнения, скажем, (обратите внимание, что в приведенных выше вызовах аргумент известен во время компиляции)
fun(value); // value can be decided at runtime!
Или какая-нибудь альтернатива, если это невозможно?Цель состоит в том, чтобы разные функции вызывались на основе разных интегральных значений!
РЕДАКТИРОВАТЬ
Кстати, я не могу использовать любое из следующего:
- Использование
switch(value)
- Использование некоторых
SomeFuncTable funTable[] = {fun(Int2Type<1>(), fun(Int2Type<2>()}
и т. Д.