2012-04-27 16 views
7

私は、関数ポインタを受け入れる関数を作成しました。関数ポインタ変数にnullptrを代入するのは安全ですか?

この関数はnullポインタを受け取ることがあり、その場合は空文字列を返します。これは、NULLとnullptrをパラメータとして使用するとMSVC++ 2010で完全に正常に動作しますが、このような特殊なケースでは安全なハーバードを安全な港とはみなさない...

今はを渡すのがNULL関数ポインタ。私が尋ねる理由は、例えばvoid*が関数ポインタを受け入れない(または、少なくとも使用してはならない)からです。だから、nullptrを関数ポインタに使うべきではないという同様の理由があります。つまり、オブジェクトポインタだけで動作するように設計されていますか?

答えて

8

はい、nullptrは、関数ポインタ型を含むすべてのポインタ型のNULLポインタ値に変換できるように指定されています。

[conv.ptr] 4.10/1と[basic.compound] 3.9.2/3を参照してください。