2017-10-01 13 views
1

cppreference.com 가입일은 :사전 C++ 14 템플릿과 메타 프로그래밍 조건 연산자

이러한 조건 연산자 통상적 C++ 프로그래밍 (14)에 앞서 C++ 11 constexpr 을 사용 하였다.

std::string str = 2+2==4 ? "ok" : throw std::logic_error("2+2 != 4"); 

무엇을 참조 cppreference입니까? C++ 이전 이디엄은 무엇이었으며 왜 C++ 14에서 그 기술은 더 이상 적합하지 않은 것입니까?

+1

은'return', 등등 어떤 루프, 아니 가지, 하나 하나의 문이되도록 하였다 왜 사람들은이 제한을 회피하기 위해 return 문에서 삼항 연산자를 사용 했습니까? –

답변

3

에는 기본적으로 constexpr 함수에서 하나 이상의 명령문을 사용할 수 없습니다. 에서하실 수 있습니다.

constexpr bool str(int x){ 
    return 2+2==x ? true : throw std::logic_error("2+2 != x"); 
} 

대 : C++ 14 'constexpr` 기능 전에

constexpr bool str(int x){ 
    if (2+2==x) 
    return true; 
    else 
    throw std::logic_error("2+2 != x"); 
}