我通过编译以下示例遇到了以下问题:
templateclass Matrix { public: template int head() { return Idx; } }; template class Test { static constexpr int RayDim = 3; public: int func() const { Matrix yF; return yF.head<1>(); // ^ is template keyword required here? } }; struct Empty {}; void test() { Test t; }
链接到编译器资源管理器:https : //godbolt.org/z/js4XaP
该代码使用GCC 9.2和MSVC 19.22进行编译,但不能使用clang 9.0.0进行编译。Clang指出需要template关键字。如果static constexpr int RayDim = 3;
移入int func() const
clang接受它。
如代码块中的注释所述,是否需要template关键字yF.head<1>()
?