2012-12-23 27 views
25

Aşağıdaki üye işlevi prototipi C++ 11'de nasıl yorumlanmalıdır?'auto a_class :: f (...) -> T const' dilbilgisinde belirsiz midir?

class C { 
public: 
    auto f(...) -> T const; 
} 
O Yapabileceğimi biliyorum

sınıf C const üye işlev veya tür T. bir const değerini döndüren bir const olmayan üye işlevi olabilir ya o bana gelirdi

T const f(...); 

veya

Ancak
T f(...) const; 

, ben h ile tutarlı olmasını istiyorum tıpkı fonksiyon yazmak Ben fonksiyonları ilan ediyorum, bu yüzden her yerde yeni C++ 11 auto f(...) -> RetType yolunu kullanmaya karar verdim.

cevap

29

Geri dönüş türü, cv- ve statik olmayan bir üye işlevinin yeniden niteleyicileri sonra gelir. Bu, sorudaki örneğin T const f(...); ile aynı anlama geldiği anlamına gelir.

§8.4.1 [dcl.fct.def.general] p2

bir fonksiyon tanımı Bildiricisi

D1 (parametre bildirimi-maddesi) CV-niteleyici seq tercih ref-eleme tercih şekle sahip olacaktır özel durum belirtimi opt öznitelik-belirteç-seq opt izleme-r eturn tipi opt

Eğer auto f(...) const -> T const; yazardım, bir const üye işlev bildirmek için.

+1

+1 (ihtiyacınız olduğu gibi) :-) –

+0

@KerrekSB Yanıtlamanın yanı sıra, soran ve soran kişilerin adları gizlendiyse oylama düzeninin nasıl değişeceğini merak ediyorum. –

İlgili konular