はC++テンプレート:テンプレートのインスタンス化された型への暗黙的な変換を使用してオーバーロードされた関数を選択する!
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!
または(上記の呼び出しで、引数はコンパイル時に知られていることに注意してください)それが不可能な場合は別の方法ですか?目標は、異なる関数は、異なる積分値に基づいて呼び出される必要があります!
EDIT
ところで、私は、次のいずれかを使用することはできません。
- いいえ、方法はありませんいくつかの
SomeFuncTable funTable[] = {fun(Int2Type<1>(), fun(Int2Type<2>()}
など
私はこれが可能であることを心から疑っていますが、実際に存在する場合は答えを知りたいです。 – acron
なぜ地球上ではないのですか? – Puppy
あなたはInt2TypeがLokiに由来するとは言及していませんでした。 –