2011-08-09 9 views
1
template<typename T> void fun(const T&); // Lip 657 

template<typename T> class Bar { 
    // grants access to a single specific instance parametrized by char* 

    friend void fun<char*> (char* const &); // case one 
    friend void fun<char*> (const char* &); // case two 
}; 

私は正しい解決策であると仮定します。特定のテンプレートの友人関係を付与する方法

ケース1の代わりにケース2を使用してください。

+0

Umm。これらの2つの機能の違いは、テンプレートや友情とは何の関係もありません。 – Falmarri

+0

@Falmarri、あなたはこの質問の良いタイトルをお勧めしますか? – q0987

答えて

2

テンプレートタイプの引数は、typedefのようになります。修飾子は型全体に適用され、文字列置換のようには機能しません。

あなたの想定は正しいです。 Tがポインタである場合、funconstとして扱われるTへの参照を必要とし、最初のバージョンはconstというポインタへの参照を正しく記述します。

関連する問題