SORU
4 Aralık 2013, ÇARŞAMBA


'In geri dönüş değeri ile çözülebileceğine, neden bu kadar't bir lambda fonksiyonu'in?

#include <iostream>

int main(){

    auto lambda = [] {
        return 7;
    };

    std::cout << lambda() << '\n';

}

Bu program ve 7 derler yazdırır.
Lambda dönüş türü tamsayı türü 7 dönüş değeri temel için birebir.


Neden bu sıradan fonksiyonları ile mümkün değil mi?

#include <iostream>

auto function(){
    return 42;
}

int main(){

    std::cout << function() << '\n';
}

hata: ‘işlev’ kullanır ‘otomatik’ dönüş türü firar olmadan . tür belirleyici fonksiyonu

CEVAP
4 Aralık 2013, ÇARŞAMBA


C 14 will have that feature. -std=c 1y bayrağı ayarlayarak, GCC ya da çınlama yeni sürümleri ile test edebilirsiniz.

Live example

C 14 buna ek olarak, aynı zamanda decltype(auto) değişkenler olarak decltype(auto) aynalar () işlevin dönüş değeri decltype mantığı kullanarak, anlamak için kullanabilirsiniz.

Bir örnek için decltype(auto) özellikle yararlıdır iletme fonksiyonları için:

template<typename function_type, typename... arg_types>
decltype(auto) do_nothing_but_forward(function_type func, arg_types&&... args) {
    return func(std::forward<arg_types>(args)...);
}

decltype(auto) ile belirtilen bağımsız değişken ile çağrıldığında func gerçek dönüş türü taklit. Çok sinir bozucu ve hata eğilimli sonunda dönüş türü (kod no more çoğaltılması C 11'de yok.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CZTUTORIALS

    CZTUTORIALS

    28 Ocak 2011
  • GavinMichaelBooth

    GavinMichael

    26 AĞUSTOS 2006
  • Kap Slap

    Kap Slap

    8 Mart 2010