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

  • Diogo Oliveira

    Diogo Olivei

    4 HAZİRAN 2006
  • HereWeStayKings

    HereWeStayKi

    3 NİSAN 2013
  • Roger Huffman

    Roger Huffma

    4 ŞUBAT 2007