静的フラグ。

struct Flag1{}; struct Flag2{}; struct Flag3{};

void foo( Flag1, int value ) { /* 処理1 */ }
void foo( Flag2, int value ) { /* 処理2 */ }
void foo( Flag3, int value ) { /* 処理3 */ }

使い方

foo( Flag1(), 12 );