获取模板中最低的共享基类类型

Ian*_*ney 5 c++ inheritance templates template-meta-programming

假设我有一个函数,它接受两个不同的模板化参数:

template<typename T, typename U>
void fun(T t, U u);
Run Code Online (Sandbox Code Playgroud)

类型 T 和 U 是同一继承树的一部分。我想获得他们都继承自的最具体的类。

typedef /*something*/ shared_parent;
Run Code Online (Sandbox Code Playgroud)

例如,如果 typeT和 typeU是相同的类型,我想要那个类型。如果 typeT继承自 type U,我想要 type U。如果 TypeT和 typeU都继承自同一个父级,我需要该父级。

如果类型TU不是同一继承树的一部分,我不在乎会发生什么。