。テンプレートパラメータを使用しないテンプレートクラスのメソッドに対するコンパイラの最適化はありますか?例えば、
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
の内容が大きく、1行にT
を参照するだけの場合、コンパイラは残りのメソッドに対して生成されたマシンコードを再利用しようとしますか?
私は 'MethodUseOfT'を実際に*使用していません*' T'?あるいは一般的に 'T 'の使用。 –
あなたの問題に関しては、現代のコンパイラは、通常、最適化に関して非常に良いです。しかし、確かに知る唯一の方法は、実際に生成されたコードを調べることです。 –
編集:ありがとうございます。申し訳ありませんが、m_barのタイプはTです。 –