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

  • GoProTutorials

    GoProTutoria

    18 NİSAN 2011
  • Kat Krazy

    Kat Krazy

    12 Kasım 2010
  • Tomas N

    Tomas N

    14 Kasım 2010