Giả sử tôi có một mảng constexpr thời gian biên dịch và mẫu lớp variadic với một tập hợp các tham số không loại cùng loại với các phần tử của mảng.Mở rộng một mảng constexpr thành một tập hợp các tham số mẫu không kiểu
Mục tiêu của tôi là để nhanh chóng các lớp mẫu với các giá trị từ mảng:
struct Container
{
int containee[3];
};
constexpr Container makeContainer();
template <int... Elements> class Foo;
Foo<makeContainer().containee[0],
makeContainer().containee[1],
makeContainer().containee[2]> foo;
Đoạn mã trên hoạt động tốt. Tuy nhiên, tôi hoàn toàn không hài lòng về việc phải lập chỉ mục mảng theo cách thủ công bất cứ khi nào tôi cần tạo mẫu Foo
. Tôi muốn trình biên dịch tự động thực hiện việc đó cho tôi:
Foo<Magic(makeContainer().containee)> foo;
Tôi đã thực hiện một số RTFM ở cppreference, nhưng điều đó không có tác dụng. Tôi biết về std::forward<>()
, nhưng không thể áp dụng cho danh sách đối số mẫu.
Đây là tuyệt vời. Tôi không hiểu ý nghĩa của việc nhúng các giá trị trong các loại cho đến khi điều này. –
Người ta có thể sử dụng 'std :: make_index_sequence' thay vì 'std :: make_index_sequence <3>'. –
Constructor