我们有一个表单的模板成员函数:
template <template <class> class TT>
TT<some_type> foo() const;
现在,在从依赖名称显式指定 TT 的调用上下文中:
template <class T_other>
void bar()
{
instance.foo<T_other::template_type>();
}
Visual Studio 能够编译调用。海合会抱怨:
error: dependent-name ‘SomeConcreteType::template_type’ is parsed as a non-type, but instantiation yields a type.
并劝说typename SomeConcreteType::template_type
。这不起作用,因为SomeConcreteType::template_type
是模板类型,而不是普通类型。
- 有没有可以在这里使用的关键字?
- 让三大编译器接受它的另一种方法是什么?
编辑:现在使用 Godbolt 最小示例 https://godbolt.org/z/hvbb6jv9W