Mình có code như sau:
#include <vector>
using namespace std;
template<class Elem, template <class> class List>
void test(const List<Elem>& arr, const Elem& a) {}
int main() {
test(vector<int>(), 8);
}
Trình biên dịch báo lỗi no instance of function template “test” matches the argument list.
Nhưng mình viết thế này thì ok:
#include <vector>
using namespace std;
template<class Elem, template <class> class List, class Elem2>
void test(const List<Elem>& arr, const Elem2& a) {}
int main() {
test(vector<int>(), 8);
}
Chuyện trở nên vô cùng rắc rối nếu mình viết thế này, có chia ra Elem2 cũng không giúp được:
#include <vector>
#include <string>
using namespace std;
template<class Elem, template <class> class List>
void test(const List<basic_string<Elem>>& arr, const basic_string<Elem>& a) {}
int main() {
test(vector<string>(), string());
}
Có cách nào chỉ dùng 1 Elem thôi mà vẫn build được không?