제가 이해하는 것처럼 constexpr
은 템플릿 메타 프로그래밍과 달리 튜링이 완전하지 않으므로 동일하지 않습니다. 따라서 질문은 어느 정도까지 constexpr
템플릿 메타 프로그래밍을 쓸모 없게 만드는 것입니까?C++ 11 constexpr을 템플릿 메타 프로그래밍에 쓸모 없게 만들었습니까?
9
A
답변
21
constexpr
은 절대적으로 튜링 완료입니다. 재귀가 허용됩니다. 런타임뿐만 아니라 컴파일 타임에 작동하는 함수를 정의하는 편리한 방법입니다. constexpr
함수는 단순한 함수이므로 형식에 대한 연산을 수행 할 수 없습니다. (물론 함수를 정의하기 위해 템플릿 메타 프로그래밍을 사용하지 않는다면)
클래스 템플릿과 constexpr
은 모두 컴파일 타임 상수 표현식을 포함하는 데 사용할 수 있지만 유사성은 끝납니다. 그들은 중복되지 않으며 TMP는 언제든지 곧 사라지지 않을 것입니다.
일부 특히 추악한 컴파일 시간 계산은 적절한 기능으로보다 우아하게 재 작성 될 수 있습니다.
+5
'constexpr'이 타입들에 대해 작동 할 수 없다는 관찰을 위해서 +1. –
+0
잘 설명해 주셔서 감사합니다 ... – polapts
관련 문제
- 1. SourceSafe의 파일을 쓸모 없게 표시합니다.
- 2. PARFOR 루프에서 복제본을 쓸모 없게 덮어 씁니다.
- 3. 네임 스페이스는 프로토 타입 메서드를 C++에서 쓸모 없게 렌더링합니까?
- 4. C++ 11 가변 템플릿 템플릿 매개 변수
- 5. C++의 템플릿 조합 11
- 6. 누구나 ADT 11 Eclipse 도구를 만들었습니까?
- 7. 템플릿 프로그래밍에 대한 도움이 필요합니다.
- 8. 랩 Loki :: C++ 11 타입의 가변적 템플릿
- 9. C++ 11 파일 스트림
- 10. C#의 리플렉션 및 메타 프로그래밍에 대해 설명하는 리소스는 무엇입니까?
- 11. 왜 문자가 쓸모 없게 되었습니까? libcurl C++ Utf-8로 인코딩 된 html;
- 12. C++ 11`using` 키워드 : 템플릿 매개 변수의 템플릿 별명 지정
- 13. constexpr을 사용하여 배열 초기화?
- 14. C++ 파생 형식은 정적 constexpr을 정의해야합니다
- 15. C++ 11 템플릿 매개 변수 팩에서 null 포인터 만들기
- 16. C++ 템플릿 메타 프로그래밍, 멤버 변수 수?
- 17. C++ 템플릿 메타 프로그래밍 전문화 모호성
- 18. C++ 메타 템플릿 : 좋고 나쁜 디자인 선택?
- 19. C++ 11 std :: array
- 20. C++ 템플릿 메타 프로그래밍 : 템플릿 유형에 컴파일 조건부 연산자
- 21. 어떤 컴파일러도 constexpr을 지원합니까?
- 22. 템플릿 메타 - 매직
- 23. 템플릿 메타 프로그래밍?
- 24. C++ 11
- 25. 사용 - C++ 11 예를
- 26. 템플릿 메타 프로그래밍으로 계산 하시겠습니까?
- 27. Visual Studio 11 Beta ... WPF 템플릿?
- 28. C++ 11 가변 인자 템플릿 인자에서 중복 엔트리 제거
- 29. X 매크로를 대체하는 템플릿/constexpr/C++ 11 가지 방법이 있습니까?
- 30. C++ 11 스타일 SFINAE 및 템플릿 인스턴스화에 대한 기능 가시성
'constexpr'은 튜링 완료입니다 (분명히 무한 요건을 무시함). –
@ R.MartinhoFernandes : 만약'constexpr'가 튜링이 완료 되었다면, 양쪽 끝에 확장 가능한 정수리스트를 모델링하기 위해서'constexpr' 만 사용하십시오. – kennytm
@ R.MartinhoFernandes : http://stackoverflow.com/questions/9201506/is-constexpr-based-computation-turing-complete에 해당 답변을 게시하는 것이 흥미로울 수 있습니다. – kennytm