Bu, this question numaralı telefondan bir takiptir. OP sorusundaki kod, bana göre oldukça makul ve açık görünüyordu. böylece, parametrelerin tipleri dönüş türünü belirlemek için kullanılabilir ilan en az C++ 11, AyrıcaNeden C++, varsayılan değerler için kullanılan ikinci parametre parametrelerine izin vermiyor?
int foo(int a, int b = a);
: Neden böyle bir şey ikincisi parametrelerin varsayılan değerleri tanımlamak için eski parametreler kullanılarak izin ++ C yapmaz benzer şekilde işlev parametreleri kullanmak duyulmamış değil:
auto bar(int a) -> decltype(a);
Böylece soru: neden (ler) neden foo
yukarıdaki beyanı izin verilmez nelerdir?
bir nedeni bu anda tanımlanmamış işlev argümanı değerlendirme sipariş üzerine bir sınırlama, gerektirecektir aklı başında olmaktır C++. Bu geri dönüş tipi örnek için gerekli değildir. – MooseBoys
Bunun yanısıra, bunun yapılacağı bir durum ekleyebiliyorsanız * diğer bir sorunun yanıtı olarak aşırı yüklenme ile elde edilemezse, * ihtiyaca * önemli bir yakıt ekleyecektir. * İhtiyaç * veya geriye dönük uyumluluk olmadan, standartlar komitesi özellik ekinde biraz muhafazakârdır. "Neden olmasın?" çok daha sıkı "neden" lehine. – WhozCraig
Bir yan not olarak: C++ ('__cdecl' ve' __stdcall') 'da kullanılan en popüler iki çağrı kuralı [sağdan sola doğru sırala] (https://msdn.microsoft.com/en-us/library/984x0h58) .aspx) argümanı geçiyor. Bir işlev argümanı olarak trival olmayan (özel kurucuları içeren) parametrelerle hata ayıkladığınızda ve bu çağrıya adım atıyorsanız, kurucuların * gerçekte ters sırada çağrıldığını görebilirsiniz. –