Có cách nào để lấy mẫu từ chuyên môn mẫu không? Ví dụ. std::unordered_map
từ biến loại std::unordered_map<char, char>
để được chuyển dưới dạng thông số mẫu mẫu.Mẫu từ chuyên môn mẫu
Minimal dụ:
#include <unordered_map>
template <template <class ...> class t_map>
class A
{
public:
typedef t_map <int, int> map_type;
};
int main(int argc, char const **argv)
{
std::unordered_map<char, char> map;
// decltype yields std::unordered_map<char, char> (as expected).
typename A<decltype(map)>::map_type map_2;
return 0;
}
Nó phụ thuộc vào những gì bạn muốn làm gì với bản mẫu. Nói chung, bạn có thể vượt qua các loại chứ không phải mẫu. Những gì bạn có thể làm là thay thế các tham số mẫu. Bạn có thể cung cấp thêm ngữ cảnh không? – MarkusParker
Tôi có một vài lớp học (vì lợi ích của đa hình) lấy một tham số mẫu mẫu và thực hiện một chuyên môn từ nó. Các lớp cung cấp giao diện tối thiểu cho một vùng chứa kiểu bản đồ. Ta lấy một 'std :: map', một' std :: vector' khác và thực hiện băm hoàn hảo. Để kiểm tra một số chuyên ngành của các lớp, sẽ thuận tiện khi viết một hàm chỉ sử dụng vùng chứa mô hình (ví dụ: 'std :: map') mẫu sẽ được chuyển đến lớp của tôi. –
tsnorri