Перегруз наверняка.
Хорошо, так что не "очевидно", какая функция вызывается (спорная) ... и что? Вам все равно, что он может принимать различные типы параметров, просто нужно делать свое дело. Если у вас разное поведение в зависимости от разных перегрузок, вы злоупотребляли перегрузками, но не указали на их недостатки.
Пример злоупотребления перегрузками:
// good:
struct has_properties
{
void property1(float); // set property1, which happens to be a float
void property2(int); // set property2, which happens to be an int
};
// bad:
struct has_properties
{
void property(float); // set property1, abusing that it's a float
void property(int); // set property2, abusing that it's an int
};
Надеюсь, вы видите проблему здесь. Если две функции имеют одинаковое имя, они должны делать одно и то же.
Еще лучше, если вы просто пытаетесь разрешить возможность работы с разными типами, просто используйте шаблон. (Возможно, это форма перегрузки.)