รหัสต่อไปนี้ควรจะคอมไพล์หรือไม่
#include <type_traits>
void foo() {
const std::pair<int, int> x = {1, 2};
auto [a, b] = x;
static_assert(std::is_const_v<decltype(a)>);
static_assert(std::is_const_v<decltype(b)>);
}
- MSVC พูดว่า "ใช่!"
- GCC พูดว่า "โอ้ ไม่นะเพื่อน!"
- เสียงดังกราวพูดว่า "ไม่มีทาง!"
นี่เป็นข้อบกพร่องของ MSVC หรือไม่
มาตรฐานไม่ได้ตรงไปตรงมาที่นี่ (ฉันได้ดูอย่างรวดเร็ว) แต่เมื่อพิจารณากฎสำหรับ auto
ฉันคิดว่า a
และ b
ควรถูกคัดลอกโดยละทิ้ง cv-qualifier