Bir şablon kurucu ile sınıf oluşturmak istiyorum:C++ standardı, şablon olmayan bir sınıf için şablon kurucusuna izin veriyor mu?
class foo
{
template <class T> foo(T var) {}
};
Bu VS2008 derler, ama bir standart dışı uzantısı ise veya C++ standart izin veriyorsa hiçbir fikrim yok. [Temp.mem] 'de
İzin var. – BoBTFish
En azından düz C++ açısından, MS standardı dikkate aldım ve genellikle bazılarının yaptığı gibi uzantılar için kopmuyor. – ChiefTwoPencils
Bu izin ve bazen oldukça kullanışlı geliyor. Derleme olmaması için bir sebep yok. Kurucu hala bir işlevdir ve bu nedenle şablona dayalı olabilir. Ancak, kurucular için bir kısıtlama vardır. * Açık * şablon parametreleriyle çağrılmazlar; argüman listesinden * çıkarılabilirler *. Yani 'template foo() {T bir şey; ...} 'çalışmaz. –
WhozCraig