3
ฉันจะรับความลึกของ std หลายมิติ :: เวกเตอร์ในเวลารวบรวมได้อย่างไร
ฉันมีฟังก์ชั่นที่ใช้หลายมิติstd::vectorและต้องการความลึก (หรือจำนวนมิติ) ที่จะส่งผ่านเป็นพารามิเตอร์เทมเพลต แทนที่จะเขียนโค้ดนี้ฉันอยากจะเขียนconstexprฟังก์ชั่นที่จะรับstd::vectorและคืนความลึกเป็นunsigned integerค่า ตัวอย่างเช่น: std::vector<std::vector<std::vector<int>>> v = { { { 0, 1}, { 2, 3 } }, { { 4, 5}, { 6, 7 } }, }; // Returns 3 size_t depth = GetDepth(v); สิ่งนี้จะต้องทำในเวลารวบรวมแต่เนื่องจากความลึกนี้จะถูกส่งผ่านไปยังฟังก์ชันเทมเพลตเป็นพารามิเตอร์เทมเพลต: // Same as calling foo<3>(v); foo<GetDepth(v)>(v); มีวิธีการทำเช่นนี้?