Hãy xem xét ví dụ này (also available on wandbox):Liệu C++ 17 có thể suy ra các mẫu tham số mẫu `match` không kiểu` mẫu` với các tham số không kiểu rõ ràng không?
template <template <auto> class>
void test() { }
template <int>
struct X { };
Đang cố gắng để nhanh chóng test<X>()
trên clang++
4,0 (thân cây) kết quả trong một lỗi biên dịch:
error: no matching function for call to 'test'
test<X>();
^~~~~~~
note: candidate template ignored:
invalid explicitly-specified argument for 1st template parameter
void test() { }
My ban đầu giả định/trực giác là test
có thể được sử dụng để khớp với bất kỳ số template
nào có thông số không phải loại.
Tuy nhiên, đoạn mã sau biên dịch thành công:
template <template <auto> class>
void test() { }
// vvvv
template <auto>
struct X { };
Đây có phải là mục đích? Không thể tìm thấy bất kỳ điều gì kết thúc trong số P0127R2.
Trong tiêu đề, ý của bạn có phải là "được suy luận" không? –