SORU
15 Mart 2010, PAZARTESİ


Varsayılan işlev şablonları için şablon değişkenleri

Neden bir sınıf şablonu varsayılan şablon bağımsız değişkenleri yalnızca izin verilir? Neden üye işlevi bir şablon olarak varsayılan bir tür tanımlayabilir mi? Örneğin:

struct mycclass {
  template<class T=int>
  void mymember(T* vec) {
    // ...
  }
};

Bunun yerine, C varsayılan şablon bağımsız değişkenleri yalnızca bir sınıf şablonu izin verilen zorlar.

CEVAP
15 Mart 2010, PAZARTESİ


Mantıklı varsayılan şablon argümanlar vermek için yapar. Örneğin bir sıralama işlevi oluşturabilirsiniz:

template<typename Iterator, 
         typename Comp = std::less<
            typename std::iterator_traits<Iterator>::value_type> >
void sort(Iterator beg, Iterator end, Comp c = Comp()) {
  ...
}

C 0 C tanıtır . Bjarne Stroustrup tarafından bu kusur raporu: ne dedi Default Template Arguments for Function Templates

Yasağı varsayılan şablon bağımsız değişken işlev şablonları bir gayri meşru kalan süre yerde duran işlevleri vardı tedavi olarak ikinci sınıf vatandaş ve gerekli tüm şablon bağımsız değişkenleri için çıkarılabilir dan bağımsız değişken yerine belirtildi.

Kısıtlama cidden gereksiz yere duran üye fonksiyonları fonksiyonları farklı yaparak programlama tarzı, böylece zor STL-tarzı kod yazma yapmak krampları.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MC JIN'S OLD YouTube CHANNEL

    MC JIN'S OLD

    2 Kasım 2008
  • Branboy3

    Branboy3

    12 AĞUSTOS 2012
  • HowcastFoodDrink

    HowcastFoodD

    21 EYLÜL 2010