조건 연산자가 활성 부분 만 평가해야하기 때문에 이러한 데모 기능은 gcc 에서 무한 루프가 아니어야합니다.C++의 조건부 연산자 버그?
Visual Studio 2015에서 올바르게 컴파일되지만 g ++ 6.3에서 무한 재귀 오류 컴파일 오류가 발생합니다. 내가 뭘 놓치고 있니?
template <int n>
constexpr int infinite_loop_error(){
return (n) ? infinite_loop_error<n - 1>() : 0;
}
template <int n>
constexpr int infinite_loop_error_2(){
if (n) return infinite_loop_error_2<n - 1>();
else return 0;
}
void main() {
infinite_loop_error<3>();
infinite_loop_error_2<3>();
}
표준의 모든 내용이 무한 재귀가 아니어야한다고 말합니까? 아마도 C++ 17에서 constexpr (제 생각에는?)이 해결책이 될 것입니다. – Kevin
함수 템플리트의 특수화를 작성하여 문제점을 수정할 수 있음을 알고 있습니다. –
to kevin : 예! "constexpr"문 (clang으로 테스트 한 경우)이 이에 적합합니다. 제안을 주셔서 감사합니다 – programmer