以下代码无法使用gcc或clang进行编译。
template<class T>
class foo{};
template<class T>
class template_class_with_struct
{
void my_method() {
if(this->b.foo < 1);
};
struct bar
{
long foo;
} b;
};
错误消息是
error: type/value mismatch at argument 1 in template parameter list for 'template<class T> class foo'
8 | if(this->b.foo < 1);
该错误是由模板类foo引起的。当写<=而不是<1时,它也会编译。
任何提示表示赞赏吗?
CompilerExplorer链接https://godbolt.org/z/v6Tygo
b.bar::foo
或括号((this->b.foo) < 1
)