前提
テンプレート関数において,デフォルト引数をnullptrとした場合に,引数を与えないとエラーが出ないのに,nullptrと引数を与えるとエラーが出ます。簡単なことのようなのに,解決できなくてハマってしまいました。
どなたか,教えてください。
発生している問題・エラーメッセージ
No matching function for call to 'f'
該当のソースコード
C++
template<typename V=std::vector<int> > void f( int n, V*p = nullptr ){} int main (){ f(1,nullptr);///エラーが出る f(1);///エラーは出ない }
実現したいこと
最終的に行いたいことは次のようなコードです。すなわち,第3引数がデフォルト引数としないため,第2引数をデフォルト引数にすることができません。第2引数が必要ない時に,nullptrを渡したいというものです。
C++
template<typename V=std::vector<int> > void f( int n, V*p, int m ){} int main (){ f(1,nullptr,3); }
補足情報(FW/ツールのバージョンなど)
clang
C++17
まだ回答がついていません
会員登録して回答してみよう