2012-02-14 6 views
3

構文が正しいことを確信できます。私は遊んでclasstypenameに変更しました。まだ行きません。2つのパラメータに部分的な特殊化を使用する方法

どのようにして2番目の関数テンプレートが起動するのですか?

#include <iostream> 

template<typename T, typename TT> void fn(T t, TT tt) { std::cout<<"general"<<std::endl; } 
template<> void fn<T, bool>(T t, bool tt) { std::cout<<"bool"<<std::endl; } 
int main(){ 
    fn("", ""); 
    fn("", true); 
} 
+0

をも[なぜ関数テンプレートを特化しない]を参照(http://www.gotw.ca/publications/mill17.htm) – sth

答えて

7

機能テンプレートの部分的な特殊化はありません。だけではなく、オーバーロードを使用します。関数テンプレートの特殊化に

template<typename T> void fn(T t, bool tt) { std::cout<<"bool"<<std::endl; } 
関連する問題