この場合
void f(int *);
void f(const int *);
...
int i;
f(&i);
状況はかなり明確です - f(int *) が呼び出されますが、これは正しいようです。
しかし、私がこれを持っている場合(間違ってそのように行われました(*)):
class aa
{
public:
operator bool() const;
operator char *();
};
void func(bool);
aa a;
func(a);
operator char *() が呼び出されます。そのような決定パスが、演算子 bool() に行くよりも優れている理由がわかりません。何か案は?
(*) const を 2 番目の演算子に追加すると、コードは当然期待どおりに機能します。