Почему неконстантная версия выбрана вместо константной версии для класса?

Ниже приведен тестовый код:

struct A
{
  operator int ();
  operator int () const;
};

void foo (const int);

Теперь, после вызова:

foo(A());  // calls A::operator int()

Почему он всегда выбирает неконстантные версия ? Даже создание оператора const int () const; никак не влияет на вызов foo () . Помимо стандартной ссылки, может ли кто-нибудь логически объяснить причину этого?

6
задан James McNellis 20 July 2011 в 05:55
поделиться