次のスニペットがあるとします。
template <class T>
void fct(T* a, T* b){
// do something
}
A a;
fct(&a, nullptr); // Problem here!
呼び出し引数は型A*でnullptr_tあり、コンパイラは template parameter を推測できないため、これは問題を引き起こしますT。
一般に、これを解決する方法をいくつか想像できます。
- 定義
A* b = nullptrして使用するfct(&a, b) - ケース
fctの1 つの引数でオーバーロードを定義しますnullptr - 使用する
fct(&a, static_cast<A*>(nullptr))
または、「型付き nullptr」のようなものを作成するなど、よりクリーンなソリューションはありますか?