Tür şablon parametrelerinin nasıl derlendiğini anladım. Ancak, türü olmayan şablonlar da aynı şekilde derlenir mi? Böyle bir tip şablonla ÖrneğinTürlü olmayan şablon parametreleri nasıl derlenir?
:
yukarıdatemplate<typename T>
class TemplatedClass {
..do something with T..
};
TemplatedClass<int> IntClass;
TemplatedClass<char> CharClass;
int ve char için ayrı sınıf tanımlarına derlenmiş olur:
class TemplatedClass<int> {
..do something with int..
};
class TemplatedClass<char> {
..do something with char..
};
olmayan tip parametrelerini templating, Derleyici aynı şekilde yapar mı? Örneğin: Aşağıdaki gibi her sayısal değer için ayrı sınıf tanımları oluşturur muydu? Bu, aşağıdaki gibi her sayısal değer için ayrı sınıf tanımları oluşturur mu? Eğer öyleyse
class NumericClass3 {
int array[3];
..do something else with 3..
};
class NumericClass5 {
int array[5];
..do something else with 5..
};
, şablon parametresi için sayısal olasılıklar önemli ölçüde sayıda şişirilmiş derlenen kodun bir ton yönlendiren vardır bulunamazsa? Temel API'mde sayısal bir şablonla tanımlanmış bir statik dizi sınıfına sahip olabilirdim. Sonra her zaman benzersiz bir uzunluk değerine sahip bir örnek ilan ettim, bunun için yeni bir sınıf tanımı derlemek zorunda kalacaktı. Bu, kodumun açık uçlu olduğunu varsayarak, çok sayıda derlenmiş tanımlamaya yol açabilir. Bildiğim kadarıyla, bu hala teşvik edilmiş bir uygulamadır. Derleyici daha sonra tip olmayan şablonlarla uğraşmanın başka bir yoluna sahip mi? Ya da bu şekilde derlenmesini gerektiren genel giderler bu kadar önemli değil midir?
Evet, her bir farklı sayı farklı bir sınıfı yok edecektir. –
Eğer gerçekten ihtiyacınız varsa (olası optimizasyonlardan sonra bile), bellek alandan gelemez. – edmz
[Itanium C++ ABI] (http://mentorembedded.github.io/cxx-abi/abi.html#mangle.template-arg) şablon argümanlarının (sınıf şablonu) adlarına nasıl eklenebileceğinin bir yolunu gösterir. sınıf şablonunun üye işlevi, ..) uzmanlık. ([İfadelerin nasıl karıştırılacağını unutmayın] (http://mentorembedded.github.io/cxx-abi/abi.html#mangle.expr-primary).) – dyp