Encltype لإعلان معلمة نوع الإرجاع من الوظيفة (بدون تلقائي)

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

  •  25-08-2022
  •  | 
  •  

سؤال

هذا يبدو وكأنه سؤال تافهة بالنسبة لي ، ربما لم أجد الوثائق الصحيحة ..

لدي هيكل أ ، وأريد تحديد المعلمة ب ليكون من نوع الإرجاع من الوظيفة أ:

struct A{
    int operator[](int);
};

ثم في مرحلة ما

decltype(A::operator[]) b = 0;

يمكنني أن أفعل هذا: لكنه قبيح ..

A a;
decltype(a[0]) b = 0;

(يمكن أن تكون مزدوجة / int إلخ) ، لا أريد استخدام القوالب.

شكرًا،

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

المحلول

أنا لا أفهم تمامًا الحاجة ، بخلاف اللعب مع بناء الجملة. هذا بالضبط ماذا auto تم تصميمه ل ، و auto مدعوم من نفس المعيار الذي تمت إضافته decltype...

على أي حال ، تحتاج إلى محاكاة استدعاء الوظيفة:

decltype(std::declval<A>()[0]) b = 0;   // equivalent to `int b = 0;`
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top