diff --git a/lang/cpp14/relaxing_constraints_on_constexpr.md b/lang/cpp14/relaxing_constraints_on_constexpr.md index b3cdb1a3f4..77d332e975 100644 --- a/lang/cpp14/relaxing_constraints_on_constexpr.md +++ b/lang/cpp14/relaxing_constraints_on_constexpr.md @@ -10,7 +10,7 @@ C++11で、汎用定数式の機能である[`constexpr`](/lang/cpp11/constexpr. - `if`文と`switch`文を許可 - 全てのループ文を許可(`for`文、範囲`for`文、`while`文、`do-while`文) - 変数の書き換えを許可 -- 戻り値型(リテラル型)として、`void`を許可 +- 戻り値型(リテラル型)として、`void`を許可 / 戻り値型や関数引数で非`const`参照を許可 - `constexpr`非静的メンバ関数の、暗黙の`const`修飾を削除 @@ -137,11 +137,13 @@ constexpr int square(int n) ``` -### `constexpr`関数の戻り値型として、`void`を許可 +### `constexpr`関数の戻り値型として、`void`を許可 / 戻り値型や関数引数で非`const`参照を許可 `constexpr`関数での、パラメータの型、および戻り値の型は、[リテラル型](/reference/type_traits/is_literal_type.md)に分類される型に限定される。 C++14では、[リテラル型](/reference/type_traits/is_literal_type.md)に分類される型に、`void`が追加された。 +また、戻り値型や関数引数で非`const`参照を使うことが許可された。 + これにより、`constexpr`関数の戻り値型を`void`とし、非`const`参照のパラメータを書き換えて結果を返す、という操作が許可された。 ```cpp