У меня есть простой класс:
class A {
public:
bool f(int* status = nullptr) noexcept {
if (status) *status = 1;
return true;
}
void f() {
throw std::make_pair<int, bool>(1, true);
}
};
int main() {
A a;
a.f(); // <- Ambiguity is here! I want to call 'void f()'
}
Я хочу разрешить неоднозначность вызова метода в пользу метода throw-throw любым способом.
Обоснование такого интерфейса:
- Чтобы иметь интерфейс
noexcept(true)иnoexcept(false), - Чтобы дополнительно получить дополнительную информацию с помощью указателя в варианте
noexcept(false), в то время как вариантnoexcept(true)всегда будет упаковывать эту информацию в исключение.
Возможно ли вообще? Предложения по улучшению интерфейса также приветствуются.