Какую функцию преобразования следует вызвать в следующем примере? Почему следует предпочесть одно другому?
struct A
{
operator int();
operator int*();
};
A x;
int i = x + 1;
Компилятор выбирает operator int() .. но почему?
Вот некоторые актуальные цитаты из C ++ 03:
От [expr.add]
В качестве дополнения, оба операнда должны иметь арифметический или перечислительный тип, или один операнд должен быть указателем на полностью определенный тип объекта, а другой должен иметь целочисленный или перечисляемый тип.
От [конв.]
выражения с заданным типом будут неявно преобразованы в другие типы в нескольких контекстах:
- При использовании в качестве операндов операторов. Требования оператора к его операндам диктуют тип назначения.
int *i = x + 1;? - person John   schedule 16.07.2013int -> int *. - person chris   schedule 16.07.2013