template<bool b = 2> void foo(void) {}
template void foo();
template<unsigned char n = 258> void bar(void) {}
template void bar();
GCC instantiates foo < true> và bar < 2>; Clang từ chối cả hai với "lỗi: đối số mẫu không đánh giá là 2, không thể thu hẹp để nhập 'bool' [-WC++ 11-narrowing]".Hành vi mong đợi trên các tham số mẫu nằm ngoài phạm vi?
Mã trên có hợp lệ không? Đây có phải là lỗi trong một trong số đó không?
phiên bản sử dụng: Clang 3.8.0-2ubuntu4, GCC 5.4.0 20.160.609 (Ubuntu 5.4.0-6ubuntu1 ~ 16.04.2)