VC6: テンプレート引数だけが違う関数定義は無視される

2011 年 3 月 20 日 はてなブックマークへ追加 はてなブックマーク - VC6: テンプレート引数だけが違う関数定義は無視される Bookmark this on Delicious

せめてコンパイルエラーにしてくれ:

template <class T>
const T& GetInstance()
{
    static const T o;
    return o;
}
// この設計の良し悪しは置いといて

GetInstance<Foo>();
GetInstance<Bar>();
// どっちかしか有効にならない

とりあえずこれで動く:

template <class T>
const T& GetInstance(const T* /*dummy*/ = 0)
{
    static const T o;
    return o;
}

まともな回避方法については VC6 の関数テンプレートのバグにハマる - C++ Labyrinth をどうぞ。

コメント

blog comments powered by Disqus