5

次のスニペットがあるとします。

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」のようなものを作成するなど、よりクリーンなソリューションはありますか?

4

4 に答える 4