Bar*_*wek 6 c++ inheritance templates boost assert
我有一个类,假设是一个基类:
template<int ID>
class BaseClass { ... };
Run Code Online (Sandbox Code Playgroud)
如果两个类尝试使用相同的ID值继承此基类,我怎么能出现编译时错误.那就是 - 这个代码可以起作用:
class A : BaseClass<1> { ... }
class B : BaseClass<2> { ... }
Run Code Online (Sandbox Code Playgroud)
但是这段代码假设会导致错误:
class A : BaseClass<1> { ... }
class B : BaseClass<1> { ... }
Run Code Online (Sandbox Code Playgroud)
怎么能实现这个目标?BOOST_STATIC_ASSERT有帮助吗?
我认为这是不可能的。
如果可能的话,我们也可以让编译器为以下代码生成错误,这在概念上与您的代码等效。
struct Base {};
struct OtherBase {};
struct A : Base {}; //Base is used here!
struct B : Base {}; // error - used base class. please use some other base!
struct C : OtherBase {}; // ok - unused based!
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
185 次 |
| 最近记录: |