2017-10-01 18 views
1

<a href="http://en.cppreference.com/w/cpp/language/operator_other" rel="nofollow noreferrer">cppreference.com</a>からプレ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'、あるなど無いループ、いいえの枝が、ある1つの文を持つことが許されましたなぜ人々はこの制限を回避するために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"); 
} 
関連する問題