SORU
16 NİSAN 2011, CUMARTESİ


Tip şablon parametreleri

Tip şablon parametresi sabit ayrılmaz bir ifadesi olması gerektiğini anlıyorum. Biri ışık neden böyle ? tutabilir

template <std::string temp>
void foo()
{
     // ...
}

hata C2993: ':: std string' : tip şablon parametresi için geçersiz türü''. temp

Sürekli ayrılmaz bir ifadenin ne demek olduğunu anladım. Yukarıdaki kod parçasında olduğu gibi std::string gibi sabit olmayan türleri izin verilmemesinin nedenleri nelerdir ?

CEVAP
16 NİSAN 2011, CUMARTESİ


Bunu yapamazsın nedeni sabit olmayan ifadeler ve derleme zamanı sırasında ayrıştırılır yerine olamaz çünkü. Şablonlar derleme zamanı bir kavram, çünkü mümkün değil, çalışma zamanı sırasında yeni bir şablon oluşturmayı gerektirecek çalışma sırasında değişiklik olabilir.

Standart olmayan tip şablon parametreler için izin verir işte (14.1 [temp.param] p4):

Tip şablon parametre (isteğe bağlı olarak cv-nitelikli) aşağıdaki türlerinden biri olmalıdır:

  • integral ya da numaralandırma yazın
  • işaretçi işaretçisi veya işlev nesnesi için
  • referans veya referans işlevi nesne lvalue, lvalue
  • işaretçi üyesi
  • std::nullptr_t.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Chanre Joubert

    Chanre Joube

    27 Temmuz 2012
  • Digital Bounds

    Digital Boun

    19 Temmuz 2013
  • HER0R

    HER0R

    16 Aralık 2007