Parametreler bilinirken bir iç şablon konusunda uzmanlık yapmakta sıkıntı çekiyorum. İşte bir örnek:Varsayılan parametrelerle iç şablonu özelleştirme
template < typename T0 >
struct outer
{
template < typename T1 = void, typename T2 = void >
struct inner
{
typedef T1 type;
};
};
template < typename T0 >
template < typename T1 >
struct outer<T0>::inner<double,T1> { typedef int type; };
Bu iyi çalışıyor. Bunun yerine şöyle iç şablon belirtirseniz, öyle değil: Bunun için
template < typename T0 >
template < >
struct outer<T0>::inner<double,void> { typedef int type; };
Sınıf şablonları açıkça uzman olmayan çevreleyen ... '>' belirteci önce hata mesajı, "geçersiz açık uzmanlaşma olsun .. .template parametreleri kısmi uzmanlık kullanılmayan: ... T0 ". WTAF'ın burada olduğundan emin değil. başarısız olmasına
template < typename T0 >
struct outer<T0>::inner<double,void> { typedef int type; };
Ben bu beklenen ve hata iletisi şaşırtıcı değildir:
Ben de bu çalıştı. Şöyle: "çok az şablon parametre listesi".Peki, bunu yapmanın doğru yolu nedir? Elbette etrafta hack yapabilirim ama eğer tercih etmem gerekirse.
ilgili: http://stackoverflow.com/questions/9219157/why-cant-i-specialize-the-nested-template -member-uzmanlaşmadan-kapalı? lq = 1 –
Hmm ... Bir arama yaptım ama bu gelmedi. Bunu yapmadan önce doğru keçi türlerini kurban etmemeliydim. –