Bu geçerli şablon yapısı C++ şablonlarında mı?Şablon şablon parametresi işlevi
template < template <typename T2> class T>
void foo() {
}
Bu geçerli şablon yapısı C++ şablonlarında mı?Şablon şablon parametresi işlevi
template < template <typename T2> class T>
void foo() {
}
Evet. Geçerli.
Sen tam bir şablon parametre alan herhangi bir sınıf şablonu ile bu işlevi çağırabilir. Kodunuzdaki,
foo< A<int> >(); //error
Ayrıca: Örneğin, yok
template<typename T>
struct A
{
//...
};
foo<A>(); //ok
Not A
sınıf şablonu anlamına gelen şu derleme hatasına neden olur için şablon argümanı sağlamak T2
isteğe bağlıdır ve aslında, tanım daha basit hale getirmek için o kadar iyi olur, fonksiyonda kullanın kaldıramazsınız:
template < template <typename> class T>
void foo() {
T<int> x; //this is how T can be instantiated; provide template argument!
}
Demo: http://ideone.com/8jlI5
Bu durumda 'T2' gibi, her zaman isteğe bağlı mı? Sınıf şablonlarında da kullanamadım. http://ideone.com/LEt6N – user103214
@ user974191: Evet. Bu asla gerekli değildir. Bunu şablon tanımında kullanamazsınız! – Nawaz
@ChrisLutz, sanırım T2' isteğe bağlı. – iammilind
@ChrisLutz: Bence, gerçekten değil. http://ideone.com/8jlI5 – Nawaz
@Nawaz - Bunu bir yerlerde okumayı hatırlıyorum. Bugün her yerde yanlış görünüyorum. Benim hatam. –