構造体を関数でローカルに宣言すると、コンパイラから以下のエラーが発生します。しかし、関数の外で構造体を宣言するとエラーは消えます。
注 : 不足している機能を意図的に実装したわけではありません。コードで使用していないときにコンパイラがそれらを必要とする理由を知りたかっただけです。
RAII::RAII' : ローカル クラス メンバ関数に本体がありません
RAII::operator =' : ローカル クラス メンバー関数に本体がありません
void someclass::somefun()
{
static bool inProgress = false;
struct RAII
{
RAII(bool& f):flag(f){ flag = true;}
~RAII() { flag = false; }
bool& flag;
private:
RAII(const RAII& rhs);
RAII& operator= (const RAII& rhs);
};
RAII autoreset(inProgress);
// Do something
}