こんにちは。
とあるトランプゲームを作ろうと思って、以下のコードを書きました。
void InitCard(std::list<BYTE>& card){
    card.clear();
    for(int i=0;i<2;i++){
        for(int j=0;j<13;j++){
            card.push_back(j);
        }
    }
    card.push_back(13);//ジョーカを一枚追加。数値は13
    SetRandom();//srandなど
    std::random_shuffle(card.begin(),card.end());//vc7.1ではライブラリ内でエラー。なぜ??
}
このコードではrandom_shuffleでコンパイルエラーが発生してしまいます。
・C2784: 'std::reverse_iterator<_RanIt> std::operator +(_Diff,const std::reverse_iterator<_RanIt> &)' : 'const std::reverse_iterator<_RanIt> & 
用のテンプレート引数を 'std::iterator_traits<_Iter>::difference_type' から減少できませんでした。

        with
        [
            _Iter=std::list<BYTE>::iterator
        ]
・C3767: '+' 一致した関数はアクセス不可能です。
・C2676: 二項演算子 '+' : 'std::list<_Ty>::iterator' は、この演算子または定義済の演算子に適切な型への変換の定義を行いません。 (新しい動作; ヘルプを参照)

        with
        [
            _Ty=BYTE
        ]

どなたか原因がわかりませんか??