] ما هي الجوانب المحددة للآلية تفشل في العمل كما هو متوقع؟ ومع ذلك ، تنشأ الشكوك فيما يتعلق بما إذا كان هذا الشيك يتحقق مما إذا كان يتم الإعلان عن الأسماء المستخدمة في القوالب بشكل مناسب. فشل في التحقق من وجود أسماء معلنة ، مما يؤدي إلى مشكلات التجميع عندما تفتقر الأسماء إلى الإعلانات المناسبة.
لتوضيح ذلك ، فكر في المثال التالي:
من شأن المترجم المتوافق مع المعيار حل استدعاء FOO (0) أثناء المرحلة الأولى وربطه بـ foo (void*). ومع ذلك ، فإن MSVC تؤجل هذه العملية إلى المرحلة الثانية ، وربط FOO (0) بشكل غير صحيح بـ FOO (int) وينتج عن خطأ. علاوة على ذلك ، فإن تنفيذ MSVC للمرحلة الثانية ينبع المرحلة. هيكل s {} ؛ } شريط void (void *) {} قالب & lt ؛ typename t & gt ؛ void foo (t *t) { شريط (t) ؛ } شريط void (n :: s *s) {} int main () { n :: s ؛ foo (& amp ؛ s) ؛ }
في كلتا الحالتين ، يخالف سلوك MSVC الفصل المحدد بين المرحلتين الأولى والثانية من إنشاء إنشاء القالب. يستمر هذا التنفيذ غير الصحيح في Visual Studio 2015.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3