Bazı kişiler here, bazılarının here öğesinin, bir şablonla yazılmış şablonun tüm farklı şablon argümanları için bir makine koduna sahip olabileceğini söyledi, bu yüzden bu özel konuyla ilgili bir iş parçacığı açmak için karlı olacağını düşündüm eğer böyle bir olasılık yoksa, eğer varsa, hangi durumlarda buna güvenebiliriz? özel olarak, her iki söz konuda kabul edildi bir örneği aşağıdaki gibidir:Şablonlu bir işlevin tüm şablon argümanları için bir makine kodu sürümüne sahip olma olasılığı var mı?
template<size_t num>
struct Elements{
public:
SomeType elements[num];
};
template<size_t num>
void print(const Elements<num> & elements,size_t size){
//all instances do exactly same thing and with regard to Size that determines the size of object
}
ve tabii ki aynı zamanda değer versiyonu ile geçiş vardır: bir akıllı bağlayıcı, iki farklı fonksiyon gövdesi aynı olduğunda tanıyabilir
template<size_t num>
void print(const Elements<num> elements,size_t size){
//all instances do exactly same thing and with regard to Size that determines the size of object
}
Değer-değer örneğinizde, farklı örneklerin birlikte katlanması imkansızdır, çünkü elemanlar parametresinin boyutu farklı olabilir. Bu da, prolog/epilog işlevini (yığının ayrıldığı ve daha sonra temizlendiği) etkileyecektir. – Crashworks
@Crashworks_So yığın ayırma, her işlev çağrısı başına farklı boyutlarda yığın çerçevesi ayırma işini yapamaz mı? – Pooria
Hata ayıklayıcınızın sökme penceresindeki birkaç işlev çağrısına bakmayı ve yığının gerçekte nasıl ayrıldığını görmeyi denemelisiniz. Bu küçük kutuya sığabilecek her şeyden daha aydınlatıcı olabilir. =) – Crashworks