Khi biên dịch mã nguồn sau đây với gcc không có lỗi/cảnh báo:C++ 11: template tham số định nghĩa lại đối số mặc định
template< typename T = int > T func();
template< typename T = int > T func();
Khi tôi biên dịch mã nguồn cùng với kêu vang ++, tôi đã nhận lỗi sau :
redeftempparam.cc:2:24: error: template parameter redefines default argument
template< typename T = int > T func();
^
redeftempparam.cc:1:24: note: previous default template argument defined here
template< typename T = int > T func();
^
1 error generated.
Command để biên dịch
[clang++|g++] -Wall -Werror -std=c++11 redeftempparam.cc
(thông tin Version: gcc 4.7.2, kêu vang ver sion 3.3 (trunk 171722))
Câu hỏi của tôi:
Loại định nghĩa này có được phép không? Nếu không: bạn có thể vui lòng chỉ cho tôi điểm thích hợp trong tiêu chuẩn C++ không?
Có nghĩa là: Nó không được phép và kêu vang ++ là đúng. Cảm ơn nhiều! –