다음 코드는 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);
오류는 templat 클래스 foo에 의해 발생합니다. <1 대신 <=를 쓰면 컴파일됩니다.
어떤 힌트를 주시겠습니까?
컴파일러 익스플로러 링크 https://godbolt.org/z/v6Tygo
b.bar::foo
또는 괄호 ((this->b.foo) < 1
)