قوائم التهيئة وstd::array: خطأ في مجلس التعاون الخليجي
توفر فئة std::array في مكتبة C القياسية ثابتًا - حاوية صفيف الحجم. من الشائع أن هذه الفئة تدعم قوائم التهيئة.
ومع ذلك، باستخدام مجلس التعاون الخليجي 4.6.1، تحاول تهيئة مثيلات std::array باستخدام بناء الجملة التالي تفشل:
std::array<:string> strings = { "a", "b" };
std::array<:string> strings({ "a", "b" });
على الرغم من أن قوائم التهيئة تعمل مع std::vector، فقد ظهر هذا السلوك مع std::array أسئلة حول معيار C أو مشكلة محتملة في دول مجلس التعاون الخليجي.
std::array's Inner العمل
std::array هو في الأساس بنية تحتوي على صفيف. يشبه هيكلها:
template
struct std::array {
T a[size];
};
على عكس std::vector، الذي يحتوي على مُنشئ يقبل قوائم المُهيئ، std::array يفتقر إلى مثل هذا المُنشئ.التهيئة الإجمالية
على الرغم من أن std::array لا يحتوي على مُنشئ صريح لقوائم التهيئة، إلا أنه يعتبر نوعًا مجمعًا في C 11. على هذا النحو، فإنه يمكن تهيئة المجمعة. ومع ذلك، لتهيئة المصفوفة داخل البنية، يلزم وجود مجموعة إضافية من الأقواس المتعرجة:
std::array<:string> strings = {{ "a", "b" }};
خطأ محتمل في دول مجلس التعاون الخليجييسمح معيار C بحذف الأقواس المتعرجة الإضافية في مثل هذه التهيئة. ولذلك، فمن المحتمل أن عدم قدرة دول مجلس التعاون الخليجي على التعامل مع بناء الجملة هذا بدونها يعد خطأً.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3