使用多参数包可变参数模板继承 class
Inheriting class with multi parameter pack variadic template
我有一个带有多个参数包的可变参数模板 class,像这样:
template <typename... Types>
struct TopicsList { };
template <typename... Topics>
class TheParent;
template <typename... OutputTopics, typename... InputTopics>
class TheParent<TopicsList<OutputTopics...>, TopicsList<InputTopics...>>
{
};
我正在尝试从这个 class 继承,像这样:
template <typename... Topics>
class TheChild;
template <typename... OutputTopics, typename... InputTopics>
class TheChild<TopicsList<OutputTopics...>, TopicsList<InputTopics...>>
: public TheParent<OutputTopics..., InputTopics...>, public ::testing::Test
{
};
但我收到以下编译错误:
error: invalid use of incomplete type 'class {anonymous}::TheParent<TopicA, TopicB, TopicC>'
class TheChild<TopicsList<OutputTopics...>, TopicsList<InputTopics...>>
如能提供任何线索,我们将不胜感激!
怎么样
template <typename... OutputTopics, typename... InputTopics>
class TheChild<TopicsList<OutputTopics...>, TopicsList<InputTopics...>>
: public TheParent<TopicsList<OutputTopics...>, TopicsList<InputTopics...>>, public ::testing::Test
// ....................^^^^^^^^^^^...............^^^^^^^^^^^^^^..............^
{
};
?
我的意思是...如果你的 TheParent
声明只接收几个 TopicsList
,你必须维护 TopicsList
包装器传递来自 TheChild
的参数至 TheParent
.
我有一个带有多个参数包的可变参数模板 class,像这样:
template <typename... Types>
struct TopicsList { };
template <typename... Topics>
class TheParent;
template <typename... OutputTopics, typename... InputTopics>
class TheParent<TopicsList<OutputTopics...>, TopicsList<InputTopics...>>
{
};
我正在尝试从这个 class 继承,像这样:
template <typename... Topics>
class TheChild;
template <typename... OutputTopics, typename... InputTopics>
class TheChild<TopicsList<OutputTopics...>, TopicsList<InputTopics...>>
: public TheParent<OutputTopics..., InputTopics...>, public ::testing::Test
{
};
但我收到以下编译错误:
error: invalid use of incomplete type 'class {anonymous}::TheParent<TopicA, TopicB, TopicC>'
class TheChild<TopicsList<OutputTopics...>, TopicsList<InputTopics...>>
如能提供任何线索,我们将不胜感激!
怎么样
template <typename... OutputTopics, typename... InputTopics>
class TheChild<TopicsList<OutputTopics...>, TopicsList<InputTopics...>>
: public TheParent<TopicsList<OutputTopics...>, TopicsList<InputTopics...>>, public ::testing::Test
// ....................^^^^^^^^^^^...............^^^^^^^^^^^^^^..............^
{
};
?
我的意思是...如果你的 TheParent
声明只接收几个 TopicsList
,你必须维护 TopicsList
包装器传递来自 TheChild
的参数至 TheParent
.