[英]Compiler error when using an inner class template in instantiating a class template
GCC 7.5.0 正在给我一条错误消息,我对此感到困惑。 这是生成消息的最小代码:
template<template<typename> typename>
struct A
{
};
template<char>
struct X
{
template<typename>
struct Y
{
};
};
template<char c>
struct B : public A<X<c>::Y>
{
};
GCC 7.5.0 说:
../main.cpp:18:28: error: type/value mismatch at argument 1 in template parameter list for ‘template<template<class> class<template-parameter-1-1> > struct A’
subdir.mk:18: recipe for target 'main.o' failed
struct B : public A<X<c>::Y>
^
../main.cpp:18:28: note: expected a class template, got ‘X<c>::Y’
问题是否可能是 inheritance 子句中 A 的参数必须是位于命名空间级别的 class 模板? 这不是 X::Y 的情况。 不幸的是,如果不将 Y 放在 X 中,我不知道该怎么做。未显示的特定于应用程序的东西似乎强制它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.