有人here告知這是不可能的,有些人here告知有可能有機器代碼一個版本的模板函數的所有不同的模板參數,所以我認爲這將是有利可圖的,打開有關該特定事項線程如果沒有這樣的可能性,那麼,如果有的話,在什麼情況下我們可以指望呢? 這是特別在兩個提到的線程考慮的一個例子是下面:是否有可能爲模板函數的所有模板參數擁有一個機器代碼版本?
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
}
和當然還有傳值的版本也:
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
}
在你的按價值的例子中,將不同的實例摺疊在一起可能是不可能的,因爲元素參數的大小將是不同的。這反過來會影響功能prolog/epilog(堆棧被分配然後清理)。 – Crashworks 2010-11-20 08:42:36
@Crashworks_So堆棧分配不能爲每個函數調用保留不同大小的堆棧幀嗎? – Pooria 2010-11-20 08:51:29
您應該嘗試在調試器的反彙編窗口中查看幾個函數調用,並查看該堆棧是如何分配的。這可能比我能裝進這個小盒子的東西更有啓發性。 =) – Crashworks 2010-11-20 08:54:28