Làm thế nào để chuyên hàm mẫu variadic có tham chiếu const cho đối số?Chuyên môn khuôn mẫu biến thể với tham chiếu const
Ví dụ:
template<typename T, typename... Args>
T foo(Args... args) = delete;
template<> int foo(int a, const char* str, const Test& t) { .... } // Fails to compile
//template<> int foo(int a, const char* str, Test) { .... } // Ok
int main() {
auto i = foo<int>(10, "test string!", t);
return 0;
}
Khi gọi hàm foo với tuyên bố const Test&
lập luận, trình biên dịch không thấy chức năng chuyên ngành và fallbacks chức năng xóa:
error: use of deleted function ‘T foo(Args ...) [with T = int; Args = {int, const char*, Test}]’
auto i = foo<int>(10, "test string!", t);
Các biên dịch mã trên tốt nếu tôi loại bỏ tham chiếu const từ đối số. Tôi đang làm gì sai?
Mã này có thể được tìm thấy here
Tất nhiên, tôi hoàn toàn quên instantiation về rõ ràng. Cảm ơn câu trả lời của bạn! – Bected