Câu hỏi được gắn thẻ «template-meta-programming»

Lập trình siêu mẫu là một kỹ thuật lập trình siêu trong đó các mẫu được trình biên dịch sử dụng để tạo mã nguồn tạm thời, mã này được trình biên dịch hợp nhất với phần còn lại của mã nguồn và sau đó được biên dịch.

27
Kiểm tra tạm thời cho sự tồn tại của một chức năng thành viên lớp?
Có thể viết một mẫu thay đổi hành vi tùy thuộc vào việc một hàm thành viên nhất định được xác định trên một lớp không? Đây là một ví dụ đơn giản về những gì tôi muốn viết: template<class T> std::string optionalToString(T* obj) { if (FUNCTION_EXISTS(T->toString)) return obj->toString(); else …

20
Làm cách nào bạn có thể lặp qua các phần tử của std :: tuple?
Làm cách nào để tôi có thể lặp qua một tuple (sử dụng C ++ 11)? Tôi đã thử những cách sau: for(int i=0; i<std::tuple_size<T...>::value; ++i) std::get<i>(my_tuple).do_sth(); nhưng điều này không hoạt động: Lỗi 1: xin lỗi, chưa hoàn thành: không thể mở rộng 'Trình nghe ...' thành danh sách …


1
điên cuồng hơn về tinh thần - kiểu phân tích cú pháp (quy tắc so với int_parser <>) và kỹ thuật lập trình siêu
Câu hỏi được in đậm ở phía dưới, vấn đề cũng được tóm tắt bằng đoạn mã chưng cất về cuối. Tôi đang cố gắng thống nhất hệ thống kiểu của mình (hệ thống kiểu thực hiện và chuyển từ kiểu sang chuỗi) thành một thành phần duy nhất (theo …

3
Làm thế nào tôi có thể có được độ sâu của một vectơ std :: chiều đa chiều tại thời gian biên dịch?
Tôi có một hàm có nhiều chiều std::vectorvà yêu cầu độ sâu (hoặc số lượng kích thước) được truyền vào dưới dạng tham số mẫu. Thay vì mã hóa giá trị này, tôi muốn viết một constexprhàm sẽ lấy std::vectorvà trả về độ sâu làm unsigned integergiá trị. Ví dụ: …

4
Lập trình meta mẫu
Ai đó có thể giải thích cho tôi, tại sao cách lập trình meta mẫu đầu tiên sẽ đi vào vòng lặp vô hạn, nhưng cách thứ hai chạy chính xác. #include &lt;iostream&gt; using namespace std; template&lt;int N, int M&gt; struct commondivs { static const int val = (N&lt;M) ? …




7
Có thể khớp các tham số mẫu số nguyên đệ quy trong C ++ không?
Tôi có vấn đề sau đây. Tôi xác định một vectơ N chiều là như vậy #include &lt;vector&gt; #include &lt;utility&gt; #include &lt;string&gt; template &lt;int N, typename T&gt; struct NVector{ typedef std::vector&lt;typename NVector&lt;N-1,T&gt;::type&gt; type; }; template &lt;typename T&gt; struct NVector&lt;1,T&gt; { typedef std::vector&lt;T&gt; type; }; Tôi muốn viết một hàm bậc …


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.