未定義動作の話と聞いて混ざりにきました。
@Cryolite 現状の規格では *
演算子の結果が有効なポインタについてしか規定されていないので、現状は未定義動作という結論になるかと思います。(ヌルポインタniの場合の動作について処理系に対してなんの制約も無い)
明記が無いことも含めて規格の不備であるのは CWG #232 のとおり間違いないと思います。
this != nullptr を前提とした最適化がすでにいくつかのコンパイラで行われているので、非 static なメンバ関数呼び出しはメンバアクセスと同様に未定義のままとなるべきだろうと思ってます。ここらへん、修正案では抜けてる感じ。
2005 年の Note を最後に CWG #232 の進展が無いのはおかしいだろうと思うので std-discussion に投げて話を進めたほうがいいと思うんですけど、そんなつもりは無いですか?(このチャットルームで規格文面の話をするのもどうかと思うので・・・。)
std::array
から std::tuple
に入る