C++
これらのテンプレート関数のどれも
template<typename T> void foo(T par = nullptr) {return;} //#1
template<typename T> void foo(T par = std::nullptr_t(nullptr)) {return;} //#2
template<typename T> void foo(T par = int(0)) {return;} //#3
次の引数なしの呼び出しで何でもコンパイルできるようにします。
foo();
foo
ただし、任意の値で呼び出します (例: foo(2)
)。
nullptr
には特定の型があるstd::nullptr_t
ため、#1 でデフォルト パラメータに追加の型修飾が必要だとは思いませんでした。#2 と #3 ではデフォルト パラメータの型が明示的に指定されているため、型のあいまいさはないと思いました。
ここで何が問題なのですか?テンプレート関数でデフォルト パラメータを実行する適切な方法はありますか?