alf*_*lfC 7 c++ inheritance introspection base-class c++11
假设一个人有一个类层次结构,没有多重继承:
struct TOP{};
struct L : TOP{}; 
struct R : TOP{};
struct LL : L{};
struct LR : L{};
struct RL : R{};
struct RR : R{};
是否有可能编写一个返回两种类型的公共基类型的元函数?(void如果不存在公共基类,则可以返回.) 
例如
common_base<RR, R>::type == R
common_base<RL, RR>::type == R
common_base<LL, RR>::type == TOP
common_base<LL, std::string>::type == void
显然这不适用于多个inhertance,但我专注于单继承案例.
首先,如果没有对基类进行一些反省,似乎是不可能的.所以,我有这个更容易的问题,以每个clase知道它的基础(通过内部base类型)的方式来做,例如:
struct LR : L{using base = L;};
即便以这种方式,我似乎无法正确地进行元编程.
我也读到了某处(我现在找不到),GCC有一些扩展来检测公共基类.是这样的吗?
| 归档时间: | 
 | 
| 查看次数: | 644 次 | 
| 最近记录: |