2012-02-29 3 views
9

제가 이해하는 것처럼 constexpr은 템플릿 메타 프로그래밍과 달리 튜링이 완전하지 않으므로 동일하지 않습니다. 따라서 질문은 어느 정도까지 constexpr 템플릿 메타 프로그래밍을 쓸모 없게 만드는 것입니까?C++ 11 constexpr을 템플릿 메타 프로그래밍에 쓸모 없게 만들었습니까?

+1

'constexpr'은 튜링 완료입니다 (분명히 무한 요건을 무시함). –

+0

@ R.MartinhoFernandes : 만약'constexpr'가 튜링이 완료 되었다면, 양쪽 끝에 확장 가능한 정수리스트를 모델링하기 위해서'constexpr' 만 사용하십시오. – kennytm

+0

@ R.MartinhoFernandes : http://stackoverflow.com/questions/9201506/is-constexpr-based-computation-turing-complete에 해당 답변을 게시하는 것이 흥미로울 수 있습니다. – kennytm

답변

21

constexpr은 절대적으로 튜링 완료입니다. 재귀가 허용됩니다. 런타임뿐만 아니라 컴파일 타임에 작동하는 함수를 정의하는 편리한 방법입니다. constexpr 함수는 단순한 함수이므로 형식에 대한 연산을 수행 할 수 없습니다. (물론 함수를 정의하기 위해 템플릿 메타 프로그래밍을 사용하지 않는다면)

클래스 템플릿과 constexpr은 모두 컴파일 타임 상수 표현식을 포함하는 데 사용할 수 있지만 유사성은 끝납니다. 그들은 중복되지 않으며 TMP는 언제든지 곧 사라지지 않을 것입니다.

일부 특히 추악한 컴파일 시간 계산은 적절한 기능으로보다 우아하게 재 작성 될 수 있습니다.

+5

'constexpr'이 타입들에 대해 작동 할 수 없다는 관찰을 위해서 +1. –

+0

잘 설명해 주셔서 감사합니다 ... – polapts

관련 문제