"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية استخدام `std :: source_location` مع وظائف قالب variadic في c ++ 20؟

كيفية استخدام `std :: source_location` مع وظائف قالب variadic في c ++ 20؟

نشر في 2025-03-25
تصفح:325

How to Use `std::source_location` with Variadic Template Functions in C  20?

حل مشاكل موقع المصدر في وظائف القالب المتغير

في c 20 ، يتم التقاط تفاصيل السياق استدعاء الوظيفة مع std :: source_location. ومع ذلك ، فقد أثبت استخدامه مع وظائف قالب variadic تحديًا بسبب وضع معلمة Source_location. هذا أعاق استخدام std :: source_location بسبب الأسباب التالية:

المحاولة الأولى:

debug void (args && ... args ، const std :: source_location & loc = std :: source_location :: current () ؛
    debug void (const std :: source_location & loc = std :: source_location :: current () ، Args && ... args) ؛
  • يقدم غموضًا للمتصلين لأنه يتدخل معلمة غير متوقعة.

    دليل:
    template 
    void debug(Args&&... args, const std::source_location& loc = std::source_location::current());
    قالب بنية تصحيح { Debug (ts && ... ts ، const std :: source_location & loc = std :: source_location :: current ()) ؛ } ؛ قالب Debug (ts && ...) -> debug ؛

    يتيح هذا المكالمات مثل:
  • int main () { Debug (5 ، 'a' ، 3.14f ، "foo") ؛ }

    الخلاصة:
    template 
    void debug(Args&&... args, const std::source_location& loc = std::source_location::current());
    من خلال استخدام أدلة الخصم ، يمكن لمبرمجي C دمج STD :: Source_Location بسلاسة لالتقاط معلومات السياق بدون مجهود.
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3