سلوك تمكين غريب باستخدام فئات متداخلة (علة أو ميزة محمول MSVC أو ميزة)

StackOverflow https://stackoverflow.com/questions/3209085

سؤال

بعد بعض الوقت تصحيح التعليمات البرمجية الخاصة بي، قمت بتتبع سبب مشاكلي لبعض نتائج تخصص القالب غير المتوقع باستخدام Enable_If:

يفشل التعليمات البرمجية التالية التأكيد في DOTEST () في Visual Studio 2010 (و 2008)، في حين أنها لا تعمل في G ++ 3.4.5. ومع ذلك، عندما أزال القالب من SomeClass أو نقل my_condition خارج نطاق someclass يعمل في MSVC، أيضا.

هل هناك خطأ ما في هذا الرمز الذي من شأنه أن يفسر هذا السلوك (جزئيا على الأقل) أو هو هذا الخطأ في مترجم MSVC؟

(باستخدام رمز المثال هذا هو نفسه بالنسبة للزيادة والإصدار C ++ 0x STL)

giveacodicetagpre.


عند محاولة إصلاحه عن طريق تحريك الشرط من النطاق، لاحظت أيضا أن هذا ليس كافيا عند استخدام STD :: Enable_If، ولكن على الأقل يعمل مع Bost :: Enable_If:

giveacodicetagpre.

آمل أن يكون لدى شخص ما شرحا لهذا.

هل كانت مفيدة؟

المحلول

كل شيء على ما يرام مع التعليمات البرمجية الخاصة بك، فهذا فقط VC هو عربات التي تجرها الدواب.من المعروف أن تواجه مشاكل في تخصص القالب الجزئي للفصول الدراسية لعضو القوالب.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top