Tôi có vấn đề sau đây:Mở rộng một loại N lần trong mẫu tham số
template< std::size_t N >
class A
{
std::function< std::size_t(/*std::size_t,....,std::size_t <- N-times*/) > foo;
};
Như bạn thấy ở trên, tôi cố gắng để khai báo một std::function<...> foo
như một thành viên của một lớp A
. Ở đây, tôi muốn foo để có kiểu trả về std::size_t
(không có vấn đề gì) và như đầu vào, tôi sẽ vượt qua N-lần loại std::size_t
nhưng tôi không biết làm thế nào. Có khả năng nào không?
Rất cám ơn trước.
giải pháp tuyệt vời. Sạch hơn tôi. – bolov
Đối với những người đang gặp khó khăn để tìm định nghĩa: 'std :: index_sequence' là một bí danh trợ giúp được định nghĩa trong '' như một "[helper alias template \ [of' std :: integer_sequence' \] cho trường hợp chung 'T' là 'std :: size_t'] (http://en.cppreference.com/w/cpp/utility/integer_sequence#Helper_templates)." –
Và sau đó cho một cái gì đó tổng quát hơn một chút bạn có thể có một 'mẫu bằng cách sử dụng make_type_wrapper = T;' Bằng cách đó nếu bạn muốn một cái gì đó khác hơn 'size_t' như chữ ký bạn có thể sử dụng wrapper thay thế –
SirGuy