【发布时间】:2017-03-10 09:32:10
【问题描述】:
例如
template< class T >
class Foo
{
public:
float MethodUseOfT()
{
return m_bar.CalculateSomething();
}
float MethodNoUseOfT()
{
float blah(0.f);
...
return blah;
}
private:
T m_bar;
};
class Bar
{
public:
float CalculateSomething();
}
如果有人创建了Foo<Bar>,大多数编译器是如何管理的;例如,他们是否会普遍意识到MethodNoUseOfT 没有引用模板参数并使用该信息来减少生成的机器代码的大小?
另外,如果MethodUseOfT 的内容很大并且只有一行引用T,编译器会再次尝试重用为该方法的其余部分生成的机器代码吗?
【问题讨论】:
-
我没有看到
MethodUseOfT实际上使用T?或者一般使用T。 -
至于您的问题,现代编译器在优化方面通常非常出色。但唯一确定的方法是实际检查生成的代码。
-
编辑:谢谢。抱歉,m_bar 现在是 T 类型。
标签: c++ templates compiler-optimization