سؤال

#include <list>
#include <boost/tuple/tuple.hpp>

template<class InputIterator>
void f(InputIterator it)
{
    typedef boost::tuple<typename InputIterator::value_type, int> Pair;
    std::list<Pair> paired;
    typename std::list<Pair>::const_iterator output;
    for(output=paired.begin(); output!=paired.end(); ++output)
    {
        output->get<1>();
    }
}

أحصل على مكتبات مع وظيفة القالب هذه.دول مجلس التعاون الخليجي 4.1.2 (codepad.org) تقارير الخطأ التالي:

In function 'void f(InputIterator)':
Line 12: error: expected primary-expression before ')' token
compilation terminated due to -Wfatal-errors.

يمكن لشخص أكثر خبرة مع قوالب تقديم المشورة?إما المشكلة أو العبارات الرئيسية للبحث عن نفسي?هذا لي عالقة.

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

المحلول

لأن get هو قالب وظيفة ونوع من output يعتمد على معلمة القالب InputIterator, ، تحتاج إلى استخدام template الكلمة الرئيسية:

output->template get<1>();

ال كومو ج Template قالب التعليمات لديه وصف جيد لماذا هذا ضروري.

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