更新时间:2023-10-25 23:49:46
使 InnerClass
> nested_class es,你应该使用 Classes :: nested_class ...
模式:
To make InnerClass
derived from all nested_class
es, you should use Classes::nested_class...
pattern:
#include <iostream>
#include <type_traits>
template <class... Classes>
class Myclass
{
public:
class InnerClass: public Classes::nested_class...
{
};
};
class A1 {
public:
struct nested_class {
void do_stuff() { /*...*/ }
};
};
class A2 {
public:
struct nested_class {
void do_other_stuff() { /*...*/ }
};
};
int main()
{
using Class = Myclass<A1, A2>;
std::cout << std::is_base_of<A1::nested_class, Class::InnerClass>::value << std::endl;
std::cout << std::is_base_of<A2::nested_class, Class::InnerClass>::value << std::endl;
return 0;
}