Yeni bir özel proje başlattım ve bu sefer daha fazla C++11/14 kullanmaya karar verdim. Bu yüzden de çok iyi çoğunlukla çalışır yeni dönüş sözdizimiYeni C++ return sözdizimi sınırlı mı?
auto functionName() -> returnType;
kullanmaya başladı, ama şimdi bazı hata işleme gerekli ve bunun gibi yeniden yazma nasıl şeyler dışarı bulamadık:
virtual const char* what() const noexcept override;
Yeni sözdizimi ile
. Yeni sözdiziminin kullanılamadığı bazı durumlar var mı yoksa sadece doğru düzeni bulmak için yeterince akıllı değil miyim? Benim için işleri tutarlı tutmak önemlidir, umarım sorun benim tarafımda daha fazladır.
burada bakın noexcept için: http://stackoverflow.com/questions/16598320/trailing-return-type-syntax-fails-with-noexcept-specifier –
yeni döndürme türü şey gerçekten kesmek izin edilir Fonksiyon parametrelerinde decltype() kullanımı. Fonksiyon parametrelerinin sadece decltype _after_'de kullanılabildiğinden, bu tür bir yapı geri dönüş tipi için 'eski' noktaya yerleştirilemez - bu nedenle dönüş türünü etrafa taşıdılar. Benim düşünceme göre, derleyici yazarlarına, tüm dili herkes için daha az faydalı hale getirme pahasına çok fazla yardımcı oluyor. Her halükarda, tüm projeleri “yeni” söz dizimine dönüştürmeniz için hiçbir ideolojik sebep yoktur; doğal olarak daha iyi veya daha modern değildir. –
Daha güzel göründüğü sürece, jenerik olmayan koddaki son dönüş tipi sözdizimini kullanmak için herhangi bir neden bilmiyorum. Tüm "modern" kodlarda varsayılan olarak "varsayılan" olarak kullanılması amaçlanan "auto" veya brace initialization gibi bazı C++ 11 özellikleri vardır, ancak emin adımların yalnızca belirli bir alt kümesini desteklemek için var Daha önce yazmak mümkün olmayan türafe genel kod. – Ixrec