คำถามในหัวข้อ 'c++17'

การป้องกันทูเพิลอยู่นอกขอบเขตด้วย if constexpr
รหัสต่อไปนี้คอมไพล์ได้ดีกับ GCC และ Clang แต่หยุดทำงานในการอัปเดตล่าสุดเป็น Visual Studio (/std:c++latest): #include <tuple> template<int pos, typename... T> void check_tuple(T... types) { if constexpr (pos <= -1) { //...
368 มุมมอง
schedule 16.12.2023

constexpr ใน for-Statement
c++17 ให้ if constexpr ซึ่ง: ค่าของเงื่อนไขต้องเป็นนิพจน์คงที่ที่แปลงตามบริบทประเภท bool หากค่าเป็น true แสดงว่าคำสั่ง-false ถูกยกเลิก (ถ้ามี) มิฉะนั้น คำสั่ง-true จะถูกละทิ้ง มีวิธีใช้สิ่งนี้ในคำสั่ง for ด้วยหรือไม่...
3848 มุมมอง

การเปรียบเทียบ std::string_view และสตริงย่อย string_view
สมมติว่าเรามี string_view และ string_view อีกอันที่เป็นส่วนย่อยของ string_view แรก: using namespace std; // just to shorten the example... string_view s{"abc def"}; auto t = s.substr(4); auto u = s.substr(0, 4); cout << *(s.begin() + 4)...
1318 มุมมอง
schedule 01.12.2023

การเชื่อมโยงแบบมีโครงสร้างบน const
รหัสต่อไปนี้ควรจะคอมไพล์หรือไม่ #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)>);...
697 มุมมอง
schedule 24.12.2023

การผูก Python โดยใช้ pybind11 กับ std::filesystem เป็นอาร์กิวเมนต์ของฟังก์ชันที่ให้ TypeError
ฉันมีคลาส Foo() และคลาส Foo() มีฟังก์ชันพร้อมการประกาศต่อไปนี้: bool Foo::copyFile(const std::filesystem::path& src, const std::filesystem::path& dest) ข้อกำหนดคือคลาส Foo ควรมีการเชื่อมโยง Python ฉันใช้ pybind11 เพื่อสร้างการผูก...
692 มุมมอง
schedule 10.12.2023

โครงสร้างข้อมูล STL ใดที่มีประเภทการจัดเก็บที่ไม่สมบูรณ์สามารถใช้เป็นสมาชิกของคลาสได้
เท่าที่ฉันรู้ เนื่องจาก C++17 โครงสร้างข้อมูล STL บางส่วนอาจมี "อยู่" โดยมีประเภทที่ไม่สมบูรณ์เป็นพารามิเตอร์เทมเพลตซึ่งอธิบายประเภทที่เก็บไว้ ตัวอย่างเช่น ฉันอาจใช้ std::unique_ptr<Incomplete> (ฉันไม่แน่ใจว่ามันเป็นโครงสร้างข้อมูลหรือไม่)...
216 มุมมอง
schedule 19.11.2023

ทำไมเราต้อง std::nullopt [ซ้ำกัน]
เมื่อเราสามารถใช้การกำหนดค่าเริ่มต้นแบบสม่ำเสมอเพื่อเริ่มต้นสร้าง std::optional<T> ได้อย่างง่ายดาย std::optional<T> foo() { if (on_error) return {}; // ... } มีข้อเสียเปรียบใด ๆ ที่ std::nullopt แก้ไขข้างต้นหรือไม่
1977 มุมมอง
schedule 01.11.2023

วิธีเชื่อมโยงและทำให้เป็นอนุกรมฟังก์ชันโดยการโอเวอร์โหลด | ตัวดำเนินการ
ฉันกำลังพยายามหาวิธีโอเวอร์โหลด operator|() โดยทั่วไปสำหรับออบเจ็กต์คลาสฐานที่กำหนดเพื่อทำให้เป็นอนุกรมหรือลูกโซ่การเรียกใช้ฟังก์ชันที่คล้ายกับวิธีการทำงานของ pipes หรือ operator<<() ... ฉันต้องการโยงพวกมันผ่านตัวดำเนินการไปป์ .....
68 มุมมอง

การเข้าถึงสมาชิก struct ทั่วไปใน std::variant
ฉันมีปัญหาในการทำความเข้าใจวิธีใช้ std::variant ใน C ++ 17 เมื่อพิจารณาสองโครงสร้าง A และ B และ std::vector<std::variant<A,B>> vs ฉันต้องการ: อ้างถึงสมาชิกโครงสร้างทั่วไปเช่น n ; เรียกใช้ฟังก์ชันทั่วไป เช่น fun() หรือ...
321 มุมมอง
schedule 19.11.2023

การหักอาร์กิวเมนต์เทมเพลต C ++ 17 ล้มเหลว
ฉันต้องการจำลองตัวจับเวลาซึ่งจะเรียกใช้ฟังก์ชัน (โทรกลับ) เป็นระยะ ๆ โดยที่ฉันเขียนตัวอย่างต่อไปนี้ (แต่ไร้เดียงสา) โดยที่การหักอาร์กิวเมนต์ล้มเหลวที่บรรทัด Timer/ ‹int, int, float› / . ในฟังก์ชั่นหลัก ฉันกำลังรวบรวมรหัสนี้ด้วย c ++ 17 std...
64 มุมมอง
schedule 18.12.2023

ตัวระบุแอตทริบิวต์ might_unused สามารถปรากฏเพียงครั้งเดียวและยังใช้งานได้หรือไม่ [ทำซ้ำ]
ฉันชอบแอตทริบิวต์ [[maybe_unused]] และใช้บ่อยเมื่อต้องคอมไพล์การใช้งานฟังก์ชันเฉพาะการแก้ไขข้อบกพร่อง ฉันสับสนเล็กน้อยว่าควรใช้ตรงไหนเมื่อระบุอาร์กิวเมนต์ฟังก์ชันสมาชิกเป็น [[maybe_unused]] ที่ให้ไว้: //Foo.h class Foo { void...
32 มุมมอง
schedule 16.01.2024