本日のバグ
昨日のバグの逆ヴァージョン発見。アクセス可能なはずのoperator deleteを呼び出せない。
#include <cstdlib> struct base { void* operator new(std::size_t n) { return std::malloc(n); } void operator delete(void* p) { std::free(p); } }; class deriv: base { public: using base::operator new; using base::operator delete; }; int main() { deriv* x = new deriv; delete x; return 0; }
とりあえずの対応策
private継承を止める。(派生クラスでoperator deleteをオーバーライドしてもVCは無視しやがった)