คำถามในหัวข้อ '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 มุมมอง
schedule
19.11.2023
การเปรียบเทียบ 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 มุมมอง
schedule
19.12.2023
การเข้าถึงสมาชิก 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