سؤال

تعزيز على حد سواء enable_if و disable_if, ، ولكن يبدو أن C ++ 0x يفتقد إلى الأخير. لماذا تم استبعادها؟ هل هناك مرافق برمجة تلوي في C ++ 0x والتي تسمح لي بالبناء disable_if من ناحية enable_if?


أوه ، لقد لاحظت ذلك للتو std::enable_if هو في الأساس boost::enable_if_c, ، وأنه لا يوجد شيء من هذا القبيل boost::enable_if في C ++ 0x.

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

المحلول

في خطر الظهور بالغباء ، فقط افعل !expression بدلاً من expression في معلمة قالب BOOL في enable_if لجعلها تتصرف مثل أ disable_if؟ بالطبع إذا نجحت هذه الفكرة ، يمكنك التوسع عليها لكتابة فصل مع disable_if-مثل السلوك؟

حسنًا ، أعتقد أنه يمكنك التنفيذ disable_if مثله:

template <bool B, typename T = void>
struct disable_if {
    typedef T type;
};

template <typename T>
struct disable_if<true,T> {
};
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top