Tôi đã tạo ra một mẫu như sauTại sao không phải mẫu của tôi chấp nhận một danh sách initializer
template<typename T>
void f(T const& t) { }
tôi muốn cho điều này là có thể được gọi bằng container mà còn bởi danh sách khởi tạo. Tôi nghĩ rằng nó sẽ là initializer_list<int>
, khi được gọi như sau.
f({1, 2, 3});
Nhưng GCC cư xử như thể nó không được tiêu chuẩn phù hợp
m.cpp: In function 'int main()':
m.cpp:6:25: warning: deducing 'const T' as 'const std::initializer_list<int>'
m.cpp:4:6: warning: in call to 'void f(const T&) [with T = std::initializer_list<int>]'
m.cpp:6:25: warning: (you can disable this with -fno-deduce-init-list)
bất cứ ai có thể giải thích làm thế nào tôi có thể làm cho công việc này mà không cần cảnh báo? Cảm ơn!
Hmm có vẻ không may là SO nghĩ rằng thẻ 'initializer_list' đồng nghĩa với' initializer-list' -.- C++ 0x sẽ rơi nước mắt! –
AFAICS, nó không được định nghĩa là một từ đồng nghĩa tại http://stackoverflow.com/tags/initializer-list/synonyms. Có một số logic tích hợp thay thế 'x_y' bằng' x-y' không? – sbi
Ồ, đừng bận tâm, tôi chỉ thấy http://meta.stackexchange.com/questions/75798/unfortunate-auto-detection-of-synonyms-for-initializer-list – sbi