Như tôi đã hiểu, constexpr
không phải là Turing hoàn toàn không giống như lập trình meta mẫu, vì vậy tôi tin rằng những điều này không giống nhau. Vậy câu hỏi đặt ra là ở mức độ nào constexpr
làm cho quá trình lập trình meta mẫu lỗi thời?C++ 11 constexpr để lập trình meta mẫu lỗi thời?
Trả lời
constexpr
hoàn toàn là Turing-complete. Phép đệ quy được cho phép. Đây là một cách thuận tiện để định nghĩa các hàm hoạt động tại thời gian biên dịch cũng như thời gian chạy. Tuy nhiên, hàm constexpr
chỉ là các hàm hoạt động. (Trừ khi bạn sử dụng lập trình meta mẫu để xác định hàm đã nói, tất nhiên.)
Cả hai mẫu lớp và constexpr
có thể được sử dụng để chứa biểu thức hằng số biên dịch, nhưng có sự giống nhau kết thúc. Chúng không thừa và TMP sẽ không biến mất sớm.
Một số tính toán thời gian biên dịch đặc biệt xấu xí có thể được viết lại một cách thanh lịch hơn dưới dạng các hàm phù hợp.
+1 để quan sát rằng 'constexpr' không thể hoạt động trên các loại. –
Cảm ơn bạn đã giải thích nó rất tốt ... – polapts
- 1. Recursive mẫu Lập trình meta
- 2. C++ 11 thực thi chuỗi constexpr
- 3. Đếm với Lập trình meta mẫu?
- 4. Lập trình meta mẫu C++, số biến thành viên?
- 5. Đánh giá lập trình meta mẫu
- 6. C++ 11 - static_assert trong hàm constexpr?
- 7. C++ 11 loại để lập bản đồ enum?
- 8. tính giai thừa với các mẫu thiết meta-lập trình
- 9. C++ meta-lập trình doxygen tài liệu
- 10. Trong C++ 11 là sqrt được định nghĩa là constexpr?
- 11. Mẫu Lập trình meta - tôi vẫn không hiểu: (
- 12. C++ 11 constexpr chức năng của thông qua vào mẫu luận
- 13. typedef vs thừa kế công trong C++ meta-lập trình
- 14. Có một mẫu/constexpr/C++ 11 cách thay thế X-macro không?
- 15. Có phải mẫu Lập trình meta nhanh hơn mã C tương đương không?
- 16. C++ Mẫu Lập trình meta - Có thể xuất mã được tạo ra không?
- 17. Có thể lập trình meta trong C# không?
- 18. Có bất kỳ lựa chọn thay thế lập trình meta C++ nào ngoài mẫu không?
- 19. Lập trình meta là gì?
- 20. mẫu biểu và C++ 11
- 21. Lập trình meta bằng Java
- 22. C++ Lập trình meta với các mẫu so với nội tuyến
- 23. Hiểu lợi ích của ngữ nghĩa di chuyển so với lập trình meta mẫu
- 24. Thêm thẻ meta theo lập trình trong C#
- 25. Lập trình đồng thời C++?
- 26. Làm chức năng mẫu tham số unsigned trong C++ 11
- 27. Làm thế nào để thực hiện một ít hơn so với mẫu meta-lập trình?
- 28. C++ 11 lỗi enable_if
- 29. Có thể lập trình meta trong Javascript?
- 30. C++ 11 Các mẫu tham số mẫu có biến thể
'constexpr' là Turing hoàn thành (bỏ qua các yêu cầu vô cực, rõ ràng). –
@ R.MartinhoFernandes: Nếu 'constexpr' là Turing hoàn thành, hãy sử dụng chỉ' constexpr' để mô hình hóa một danh sách các số nguyên có thể phát triển ở cả hai đầu. – kennytm
@ R.MartinhoFernandes: Bạn có thể thú vị khi đăng câu trả lời đó lên http://stackoverflow.com/questions/9201506/is-constexpr-based-computation-turing-complete. – kennytm