No: Eğer satırını açıklama ise
error: no match for 'operator++' in '++bar'
note: candidate is:
note: asdf::Foo& asdf::operator++(asdf::Foo&)
note: no known conversion for argument 1 from 'asdf::Bar' to 'asdf::Foo&'
O derler. Dikkate alınan üç paralel operatör kümesi vardır. Üyeler, üye olmayan operatörler ve yerleşikler.
üye olmayan olanları tüm sınıf üye fonksiyonları görmezden normal ADL + niteliksiz arama tarafından aranır. Bu nedenle, global operatör bir sözlükle daha yakın bir şekilde gizlenir (ve araya giren üye işlevi diğer üye olmayanları gizlemezdi).
Aşırı yük çözünürlüğünün adı sonra gerçekleştiğini unutmayın; Sizin durumunuzda operator++
ismi bulundu, ancak uygun bir aşırı yük yok.
Bar küresel ilan edilmişti, ve/veya (eski durumunda) ad asdf diğer operatör, ADL ya da (ikinci durumda) sıradan niteliksiz arama operatörü sürüklenen olsaydı .
: Overload resolution (...) takes place after name lookup has succeeded.
(C++ Standart)
[Evet edilir] (http://liveworkspace.org/code/2vreOi$0) .... –
Sanmıyorum. VC++ aynı şeyi üretir. – SChepurin
@KarthikT: Bağlantılı kodunuzun "bir hata" -argümenini nasıl desteklediğinden emin değilim. –