是否可以编写ASSERT_NEVER宏?

时间:2018-06-24 14:20:02

标签: c++ macros assert

我想编写一个C ++宏groupby,它会在控制流可能到达该点时发出编译时警告。像这样:

ASSERT_NEVER

因此,以上代码将毫无警告地进行编译。一旦您插入class Base { protected: explicit Base(); }; class A: public Base {}; class B: public Base {}; // class C: public Base {}; void doSomething (Base *pObj) { if (dynamic_cast<A*>(pObj) != NULL) doA(); else if (dynamic_cast<B*>(pObj) != NULL) doB(); else ASSERT_NEVER("You forgot one case, dude!"); } ,编译器就会停止并发出警告。

是否可以编写这样的宏?

之所以出现这个想法,是因为TypeScript具有这样的概念。参见assert-never

0 个答案:

没有答案