nullのshared_ptrオブジェクトのメンバー関数にアクセスできます:
#include <memory>
#include <iostream>
class A
{
public:
int getNum() {return 1234;}
};
int main()
{
std::shared_ptr<A> pA(nullptr);
std::cout << pA->getNum() << std::endl;
}
例外を予期していたときに1234を返します。同じ結果が
std::shared_ptr<A> pA();
また
std::shared_ptr<A> pA();
pA.reset();
これは本当に期待される動作ですか?メンバー関数呼び出しの場合に例外をスローするのは、corect shared_ptr定義とは何ですか?
VS2010を使用します。