Допустим, у меня есть класс STest
, и я хочу, чтобы он мог неявно приводить к char const*
, но не к bool
.
struct STest {
operator char const*() const& { return "abc"; }
operator bool() const& = delete;
};
void bar(bool) {}
void foo(bool) {}
void foo(char const*) {}
Эта реализация работает должным образом (ошибка) при вызове bar(STest{})
. Но это не работает для foo(STest{})
, потому что удаленная функция также учитывается при разрешении перегрузки и жалуется на двусмысленность. Есть ли способ обойти это, что означает, что bar(STest{})
вызывает ошибку, а foo(STest{})
вызывает foo(char const*)
?