- C++相談室 part134
190 :162 (ワイモマー MMbf-xgEu)[sage]:2018/02/17(土) 21:27:34.68 ID:uaRb1j8RM - また質問してすみません。
msvc(vs2017)だとコンパイラをC++17にしても以下のプログラムで C2664 'void (T *&)': 引数 1 を 'hoge *' から 'hoge *&' へ変換できません。 となってしまうのですが、コードにバグが有るでしょうか?msvcのバグでしょうか? GCCやClangではコンパイルできます。 #include <memory> struct hoge {}; template <class T> inline void safe_delete(T*& p) { if (p) { delete p; p = nullptr; } } int main() { std::unique_ptr<hoge, decltype(&safe_delete<hoge>)> sp{new hoge(), safe_delete<hoge>}; return 0; }
|