1

std::lower_bound 関数を使用しようとすると、有名な C4100 警告が表示されます。

これは私のコードです:

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;        
    }   
};

コンパイルの警告は、stl の次のコードを示しています。

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です)

4

1 に答える 1

1

まず、あなたは何も悪いことをしていないと思います。

パラメータを使用するのを忘れたか、署名を更新できず、この関数の警告を黙らせるのを忘れたようです。

私は心配しません。

于 2013-07-18T11:43:02.233 に答える