有人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