class baseClassA {
}
template <typename Input, typename Output>
class B: baseClassA {
}
class C {
public:
template <typename N, typename... Args>
auto create_classA {
auto member = std::make_unique<N>(std::forward<Args>(args)...);
members.push_back(std::move(member));
...
}
auto get_member(int index) -> A* {}
// index1和index2用来获取A*
// slot用于表示一个tuple的位置类型
auto compare(int index1, int index2, int slot) -> void() {}
private:
std::vector<std::unique_ptr<node>> members;
}
已知在main函数中我们定义了:
my_classB1: B<int, double> {}
my_classB2: B<std::tuple<int, double, int>, double>> {}
auto a1 = classC.create_classA()
auto a2 = classC.create_classA()
我的问题是:
如何能在classC这个compare函数中,比较a1的output的类型(double)存在于a2的input(std::tuple<int, double, int>)中?
也就是说如果我用compare函数:
compare(0, 1, 1) -> 这个会抛出异常,因为a2的元祖第一个元素类型是int,而a1的output类型是double
compare(0, 1, 2) -> 这个会是正常的,因为a2的元祖第二个元素类型是double,而a1的output类型也是double
compare(0, 1, 3) -> 这个会抛出异常,因为a2的元祖第二个元素类型是double,而a1的output类型也是double
谢谢大家