回答編集履歴
3
/aggregate/d
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
はい。
|
4
4
|
|
5
|
-
より正確には「対象が **constな配列型** の場合は、束縛される名前(`a`, `b`)もconstとなってしまう」です。下記コードのように対象が **constなクラスオブジェクト**
|
5
|
+
より正確には「対象が **constな配列型** の場合は、束縛される名前(`a`, `b`)もconstとなってしまう」です。下記コードのように対象が **constなクラスオブジェクト** であれば、構造化束縛により導入される名前`a`, `b`は非constな型(`int`)となります。
|
6
6
|
|
7
7
|
```c++
|
8
8
|
int main()
|
@@ -19,12 +19,12 @@
|
|
19
19
|
}
|
20
20
|
|
21
21
|
struct S { int x, y; };
|
22
|
-
{// 非constオブジェクト
|
22
|
+
{// 非constオブジェクト
|
23
23
|
S obj = { 1, 2 };
|
24
24
|
auto [a, b] = obj;
|
25
25
|
a += 1; // OK
|
26
26
|
}
|
27
|
-
{// constオブジェクト
|
27
|
+
{// constオブジェクト
|
28
28
|
const S obj = { 1, 2 };
|
29
29
|
auto [a, b] = obj;
|
30
30
|
a += 1; // OK
|
2
update
test
CHANGED
@@ -50,3 +50,4 @@
|
|
50
50
|
a += 1; // OK
|
51
51
|
}
|
52
52
|
```
|
53
|
+
C++17範囲の実装例: https://wandbox.org/permlink/SnYTx3EQgeSsUkKA
|
1
add link
test
CHANGED
@@ -38,7 +38,7 @@
|
|
38
38
|
言語組み込みの配列型(`const int[N]`)に対する回避手段は存在しない...と思います。たぶん。
|
39
39
|
|
40
40
|
`std::array<int, N>`型を経由して強引に実現することはできます。
|
41
|
-
(C++20で追加された配列型から`std::array`型へ変換する`std::to_array`ヘルパ関数を使っていますが、C++17でも相当機能を自作可能です。)
|
41
|
+
(C++20で追加された配列型から`std::array`型へ変換する`std::to_array`ヘルパ関数を使っていますが、C++17でも[相当機能を自作可能](https://en.cppreference.com/w/cpp/container/array/to_array)です。)
|
42
42
|
|
43
43
|
```c++
|
44
44
|
#include <array>
|