Tôi đã chơi với clang một thời gian và tôi tình cờ gặp "test / SemaTemplate / depend-template-recovery.cpp" (trong bản phân phối clang) được cho là cung cấp các gợi ý để khôi phục sau lỗi mẫu.
Toàn bộ sự việc có thể dễ dàng rút gọn thành một ví dụ nhỏ nhất:
template<typename T, typename U, int N> struct X {
void f(T* t)
{
// expected-error{{use 'template' keyword to treat 'f0' as a dependent template name}}
t->f0<U>();
}
};
Thông báo lỗi do clang mang lại:
tpl.cpp:6:13: error: use 'template' keyword to treat 'f0' as a dependent template name
t->f0<U>();
^
template
1 error generated.
... Nhưng tôi rất khó hiểu nơi chính xác người ta phải chèn template
từ khóa để có mã chính xác về mặt cú pháp?