2

答えを知っていると思う質問をして申し訳ありませんが、私には奇妙に思えて正しくありません。

テンプレート化された関数がある場合

template<typename T>
int TemplatedSize(T &ref){
    return sizeof(ref);
}

そして、次のような文字列リテラルでインスタンス化します。

int i = TemplatedSize("oh how I love C++ sometimes");

テンプレートのインスタンス化によってスタンプアウトされるのは、長さ 28 の const char の配列への参照を取得する関数でしょうか? そのための構文を調べましたが、これまでコードで見たことがないと言わざるを得ません。これはインスタンス化されているものと同等ですか?

int NonTemplatedSize(const char (&arrayRef)[28]){
    return sizeof(arrayRef);
}

それが正しければ、関数本体に sizeof 以外のものがあり、さまざまなサイズの多くの文字列リテラルで関数を呼び出した場合、コードの肥大化を心配する必要がありますか?

4

1 に答える 1