2013-07-18 2 views
1

Я получаю знаменитое предупреждение C4100 при попытке использовать функцию std :: lower_bound.'_IsFirstIteration': формальный параметр unreferenced в std :: lower_bound

это мой код:

typedef std::vector<SDTSPosition> TPTSFileOffsetVector; 

TPTSFileOffsetVector::iterator lowest_nearest = std::lower_bound(m_position_table.begin(), 
    m_position_table.end(), SDTSPosition(dts_position, 0), SDTSPosition()); 

компаратор находится внутри структуры:

// positioning 
struct SDTSPosition 
{ 
    SDTSPosition()  {} 

    SDTSPosition(int d, int p) 
    {  
     dts = d;   
     pos = p; 
    } 
    int dts; 
    int pos; 

    bool operator()(const SDTSPosition & left, const SDTSPosition & right) const 
    { 
     return left.dts < right.dts;   
    } 
}; 

Предупреждение компиляции указывает мне на этот код в СТЛ:

template<class _FwdIt, 
class _Pr> inline 
void __CLRCALL_OR_CDECL _Debug_order_single2(_FwdIt _First, _FwdIt _Last, _Pr _Pred, bool _IsFirstIteration, 
    const wchar_t *_File, unsigned int _Line, forward_iterator_tag) 
{ // test if _First and ++_First ordered by predicate, forward iterators 
if (_First != _Last) 
    { 
    _FwdIt _Next = _First; 
    if (++_Next != _Last) 
     if (_DEBUG_LT_PRED(_Pred, *_Next, *_First)) 
      _DEBUG_ERROR2("sequence not ordered", _File, _Line); 
    } 
} 

где там действительно нет ссылки на указанную логическую переменную.

Я делаю что-то неправильно? (кстати, это VS2005)

+0

Но вы используете 'upper_bound' здесь ... – RedX

+0

да, я пытался это сделать, это происходит в обеих функциях. – NiRR

+0

Он не предупреждает (на уровне 4) на VS2010. Weird – doctorlove

ответ

1

Сначала я бы сказал, что вы не делаете ничего плохого.

Мне кажется, что они просто забыли использовать параметр или не смогли обновить подпись и забыли отключить предупреждение для этой функции.

Я бы не стал беспокоиться.

+0

больше не беспокоится. Благодарю. – NiRR