[問題] C++17 Structured binding 型別無法理解
最近會看到一些c++17語法 想說來研究一下
https://en.cppreference.com/w/cpp/language/structured_binding
網路上介紹的文章許多 但都完全只是"介紹" 我實際上遇到一些怪異的型別推導結果
完全無法歸納規則 可能變成 知道可以用 但不敢亂用....
也許cppref 有介紹的很完整但我實在是看不太懂他表達的
舉幾個例子
1. 這屬於網頁上的case幾?我不知道....
std::map<int, int> m;
for (auto& [k, v] : m) {
k = 123;
}
k 是const& 變成不能改 ??? why....
好那我
std::map<int, int> m;
for (auto [k, v] : m) {
k = 123;
}
k是const int....哪來的const....
2.
int a = 1, b = 2;
const auto& [x, y] = std::tie(a, b);
x = 5566;
一臉就是const! 但竟然x是 int&.....可以改 why....+2
好那我
auto [z, w] = std::tie(a, b);
z = 123;
我什麼都不加....乍看就是int
z竟然是int&....我不小心改到了a.....
這我可能還可以理解 他會去decltype(z) 結果是int& 但實在不好讀也很容易誤用
還有很多看不是很懂...
總覺得找不到可以簡單記憶的規則 連VC滑鼠移過去顯示的型態也是錯的....
請問版上有人能通透理解這些規則嗎@@
不然我還是覺得寫17以前寫法
for (const auto& p : map) 我可以明確知道他在寫什麼好懂許多
討論一下~
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 27.242.129.39 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1561230037.A.5C6.html
推
06/23 05:52,
5年前
, 1F
06/23 05:52, 1F
→
06/23 05:52,
5年前
, 2F
06/23 05:52, 2F
推
06/23 05:54,
5年前
, 3F
06/23 05:54, 3F
→
06/23 05:55,
5年前
, 4F
06/23 05:55, 4F
→
06/23 05:56,
5年前
, 5F
06/23 05:56, 5F
→
06/23 05:56,
5年前
, 6F
06/23 05:56, 6F
→
06/23 06:04,
5年前
, 7F
06/23 06:04, 7F
→
06/23 12:12,
5年前
, 8F
06/23 12:12, 8F
→
06/23 12:12,
5年前
, 9F
06/23 12:12, 9F
→
06/23 12:13,
5年前
, 10F
06/23 12:13, 10F
推
06/23 13:36,
5年前
, 11F
06/23 13:36, 11F
→
06/23 13:36,
5年前
, 12F
06/23 13:36, 12F
→
06/23 13:37,
5年前
, 13F
06/23 13:37, 13F
噓
06/23 16:16,
5年前
, 14F
06/23 16:16, 14F
推
06/23 16:24,
5年前
, 15F
06/23 16:24, 15F
→
06/23 16:28,
5年前
, 16F
06/23 16:28, 16F
→
06/23 16:29,
5年前
, 17F
06/23 16:29, 17F
→
06/23 16:29,
5年前
, 18F
06/23 16:29, 18F
→
06/23 16:32,
5年前
, 19F
06/23 16:32, 19F
→
06/23 16:32,
5年前
, 20F
06/23 16:32, 20F
→
06/23 16:43,
5年前
, 21F
06/23 16:43, 21F
→
06/23 16:43,
5年前
, 22F
06/23 16:43, 22F
→
06/23 16:44,
5年前
, 23F
06/23 16:44, 23F
→
06/23 16:44,
5年前
, 24F
06/23 16:44, 24F
→
06/23 18:25,
5年前
, 25F
06/23 18:25, 25F
→
06/23 18:25,
5年前
, 26F
06/23 18:25, 26F
→
06/23 19:29,
5年前
, 27F
06/23 19:29, 27F
推
06/23 20:14,
5年前
, 28F
06/23 20:14, 28F
推
06/23 20:57,
5年前
, 29F
06/23 20:57, 29F
→
06/23 20:57,
5年前
, 30F
06/23 20:57, 30F
→
06/23 20:57,
5年前
, 31F
06/23 20:57, 31F
→
06/23 20:59,
5年前
, 32F
06/23 20:59, 32F
→
06/23 21:00,
5年前
, 33F
06/23 21:00, 33F
→
06/24 05:17,
5年前
, 34F
06/24 05:17, 34F
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 1 之 3 篇):