Это будет примерно так же плохо, как и получится:
struct badParam { template <typename T> badParam(T t) { } };
namespace last_resort {
void foo(badParam, int dummy = 0, ...) {
std::cout << "last_resort::foo" << std::endl;
}
}
У вас есть пользовательское преобразование, параметр по умолчанию и неиспользованный многоточие.
[править]
Небольшой вариант, чтобы сохранить T
Я переместил пользовательское преобразование в фиктивный параметр:
struct badParam {
badParam() { }
operator int() { return 42; }
};
namespace last_resort {
template <typename T> void foo(T t, int dummy = badParam(), ...) {
std::cout << "last_resort::foo" << std::endl;
}
}