Reputation: 12289
From cppreference.com:
Such conditional operator was commonly used in C++11 constexpr programming prior to C++14.
std::string str = 2+2==4 ? "ok" : throw std::logic_error("2+2 != 4");
What does cppreference refer to? What was the pre-C++14 idiom and why in C++14 that technique is no longer relevant?
Upvotes: 1
Views: 86
Reputation: 275740
In c++11 you could not have more than one statement, basically, in a constexpr
function. In c++14 you can.
constexpr bool str(int x){
return 2+2==x ? true : throw std::logic_error("2+2 != x");
}
vs c++14:
constexpr bool str(int x){
if (2+2==x)
return true;
else
throw std::logic_error("2+2 != x");
}
Upvotes: 3