2012-12-24 10 views
8

Ben C++ bunu başarabiliriz biliyoruz: Bu a adlı tip A bir nesne yaparSınıfıyla birlikte oluşturulan bir nesneye şablon bağımsız değişkenlerini nasıl verebilirim?

class A {} a; 

. Eşdeğerde:

A a; 

Bunu nasıl şablonlarla yapacağımı merak ediyordum. Örneğin,

template <typename T> struct N {} <int> n; 

Bu derleme değil, ancak siz bu fikri elde edersiniz. Şablon bağımsız değişkenlerini sınıf tanımlarıyla satır içi olarak oluşturulan bir nesneye nasıl belirleyebilirim? Bu mümkün mü?

+0

yapmam değil todo olanak tanıyan bir sözdizimi vardır. Her ne kadar şablon uzmanlığı ve örnekleme nesnesini özgün bir şekilde yapabiliyor olsanız da. – dchhetri

cevap

2

malzeme:

Bu, aynı zamanda bir hatadır.

14.3 açıkça onları şablon sınıf bildirimleri kullanılacak yasaklamaktadır:

In a template-declaration, explicit specialization, or explicit instantiation the init-declarator-list in the dec- laration shall contain at most one declarator. When such a declaration is used to declare a class template, no declarator is permitted.

+0

Sadece bu cevaba dayanarak argoya bir hata bildirdim, çünkü 'template <> struct A {} lulz; '. –

1

Bunu yapabileceğinizi düşünmüyorum. Anlattığınız form, yapılar ve sınıflar için, benim anlayışımdan, c ile geriye dönük uyumluluk için - yapıları için bunu yapabileceğiniz - tutuluyor.
Güzel fikir, :)

1

olsa tüm şablon argümanları varsayılan yok bile, bir şablon tanımından değişkenleri bildirmek olamaz. kapatma } standardına göre bir init-declarator-list çağrıldıktan sonra

template <typename T = int> struct N {} n;