2016-04-05 19 views
4

私は関数テンプレートに関連する簡単な質問があります。このヘッダは、いくつかの.cppファイルに含まれている場合数回インスタンス化された関数テンプレートへのポインタ

class test 
{ 
public: 
    template < class T > void f(T t) {} 
}; 

、および同じタイプでfを呼び出した.cppこれらのそれぞれは、(のは、int型としましょう):私は、テンプレートメソッドを持つクラスを含むヘッダをしていると仮定すると、fと呼ばれますコード内の他の場所の関数のポインタを取ることはできますか?潜在的にいくつかの定義があることを考慮すると、リンカーは1つしか保持しませんか?

+1

同様の質問ですが、メンバー関数テンプレートについては明示的には言及していませんが、https://stackoverflow.com/questions/7670000/addresses-of-identical-function-template-instantiations-across-compilation-units – melak47

答えて

0

C++標準セクション14/1で述べている、

テンプレートは、クラスまたは関数のファミリを定義します。

機能はありませんポインタです。あなたがしようとしていることは不可能です。

+3

文字通り "関数テンプレートのアドレスを取る"という意味ではなく、特定のインスタンス化のアドレスであると考えています。 – melak47

+0

標準でその可能性の省略のためにできない...。静的なテンプレート関数で動作するようになるかもしれませんが、移植性に疑問を抱いています。 – Bathsheba

+0

はい私の懸念は、その特定のタイプinstntiation上のポインタについてです(私の例では、関数fのポインタを取るので)。それをしてもいいですか ?それは移植可能ですか?ありがとうございます – Romain227

関連する問題