デフォルト引数 2019.06.13 長谷川啓
型の概念とは異なる 以下はエラー よって以下の実装は間違い typedef void FUNC(int = 1); void (*pf)(int = 2); ISO/IEC 14882 8.3.6 Default arguments 参照 よって以下の実装は間違い class default_arg_type : public type { const type* m_T; var* m_default_arg; // デフォルト引数 ... };
実装例 struct usr : var { enum flag_t { ..., HAS_DEFAULT_ARG, ... }; flag_t m_flag; }; map<usr*, vector<var*> > default_arg_table; 函数をキーにしてデフォルト引数を保持するテーブル usr* u = ... usr::flag_t flag = u->m_flag; if (flag & usr::HAS_DEFAULT_ARG) { p = default_arg_table.find(u); vecotr<var*>& v = p->second; ... }