البرمجة الفوقية: معايير اختيار القالب البديل لتعريف الوظيفة
يستكشف هذا السؤال مفهوم تعريف القالب بناءً على قدرة النوع على التحويل إلى سلسلة. يستخدم الكود الأصلي سمة النوع is_arithmetic، ولكن الاقتراح هو بدلاً من ذلك استخدام معيار يقيم ما إذا كان to_string محددًا للنوع.
ومع ذلك، فإن عكس هذا المعيار، وهو تحديد متى لم يتم تعريف to_string، يثبت صعبة. فشل التعليمة البرمجية التالية:
templateenable_if_t لمعالجة هذا الأمر، تقترح الإجابة استخدام سمة النوع void_t الخاصة بـ Walter Brown، والتي تسمح بإنشاء ما يلي:
template<typename T, typename = void> struct has_to_string : std::false_type { }; template<typename T> struct has_to_string<T, void_t<decltype(std::to_string(std::declval<T>()))> > : std::true_type { };تقوم سمة النوع هذه بتقييم ما إذا كانت to_string محددة لنوع معين، وبالتالي توفير معيار اختيار قالب بديل يتوافق بشكل أكثر دقة مع الهدف الأصلي.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3