template < class _RanIt> inline
void random_shuffle( _RanIt _First, _RanIt _Last)
{ // shuffle [_First, _Last)
_DEBUG_RANGE( _First, _Last) ;
if ( _First ! = _Last)
_Random_shuffle( _Unchecked( _First) , _Unchecked( _Last) ,
_Dist_type( _First) ) ; // alogithm, line #2237
}
template < class _RanIt,
class _Diff> inline
void _Random_shuffle( _RanIt _First, _RanIt _Last, _Diff * )
{ // shuffle [_First, _Last)
const int _RANDOM_BITS = 15 ; // minimum random bits from rand()
const int _RANDOM_MAX = ( 1U << _RANDOM_BITS) - 1 ;
_RanIt _Next = _First;
for ( unsigned long _Index = 2 ; ++ _Next ! = _Last; ++ _Index)
{ // assume unsigned long big enough for _Diff count
unsigned long _Rm = _RANDOM_MAX;
unsigned long _Rn = _CSTD rand ( ) & _RANDOM_MAX;
for ( ; _Rm < _Index && _Rm ! = ~0UL;
_Rm = _Rm << _RANDOM_BITS | _RANDOM_MAX)
_Rn = _Rn << _RANDOM_BITS
| ( _CSTD rand ( ) & _RANDOM_MAX) ; // build random value
_STD iter_swap( _Next, _First + _Diff( _Rn % _Index) ) ; // swap a pair <=== here the error, line 2228 of algorithm
}
}
dGVtcGxhdGU8Y2xhc3MgX1Jhbkl0PiBpbmxpbmUKCXZvaWQgcmFuZG9tX3NodWZmbGUoX1Jhbkl0IF9GaXJzdCwgX1Jhbkl0IF9MYXN0KQoJewkvLyBzaHVmZmxlIFtfRmlyc3QsIF9MYXN0KQoJX0RFQlVHX1JBTkdFKF9GaXJzdCwgX0xhc3QpOwoJaWYgKF9GaXJzdCAhPSBfTGFzdCkKCQlfUmFuZG9tX3NodWZmbGUoX1VuY2hlY2tlZChfRmlyc3QpLCBfVW5jaGVja2VkKF9MYXN0KSwKCQkJX0Rpc3RfdHlwZShfRmlyc3QpKTsgLy8gYWxvZ2l0aG0sIGxpbmUgIzIyMzcKCX0KCQoJdGVtcGxhdGU8Y2xhc3MgX1Jhbkl0LAoJY2xhc3MgX0RpZmY+IGlubGluZQoJdm9pZCBfUmFuZG9tX3NodWZmbGUoX1Jhbkl0IF9GaXJzdCwgX1Jhbkl0IF9MYXN0LCBfRGlmZiAqKQoJewkvLyBzaHVmZmxlIFtfRmlyc3QsIF9MYXN0KQoJY29uc3QgaW50IF9SQU5ET01fQklUUyA9IDE1OwkvLyBtaW5pbXVtIHJhbmRvbSBiaXRzIGZyb20gcmFuZCgpCgljb25zdCBpbnQgX1JBTkRPTV9NQVggPSAoMVUgPDwgX1JBTkRPTV9CSVRTKSAtIDE7CgoJX1Jhbkl0IF9OZXh0ID0gX0ZpcnN0OwoJZm9yICh1bnNpZ25lZCBsb25nIF9JbmRleCA9IDI7ICsrX05leHQgIT0gX0xhc3Q7ICsrX0luZGV4KQoJCXsJLy8gYXNzdW1lIHVuc2lnbmVkIGxvbmcgYmlnIGVub3VnaCBmb3IgX0RpZmYgY291bnQKCQl1bnNpZ25lZCBsb25nIF9SbSA9IF9SQU5ET01fTUFYOwoJCXVuc2lnbmVkIGxvbmcgX1JuID0gX0NTVEQgcmFuZCgpICYgX1JBTkRPTV9NQVg7CgkJZm9yICg7IF9SbSA8IF9JbmRleCAmJiBfUm0gIT0gfjBVTDsKCQkJX1JtID0gX1JtIDw8IF9SQU5ET01fQklUUyB8IF9SQU5ET01fTUFYKQoJCQlfUm4gPSBfUm4gPDwgX1JBTkRPTV9CSVRTCgkJCQl8IChfQ1NURCByYW5kKCkgJiBfUkFORE9NX01BWCk7CS8vIGJ1aWxkIHJhbmRvbSB2YWx1ZQoKCQlfU1REIGl0ZXJfc3dhcChfTmV4dCwgX0ZpcnN0ICsgX0RpZmYoX1JuICUgX0luZGV4KSk7CS8vIHN3YXAgYSBwYWlyIDw9PT0gaGVyZSB0aGUgZXJyb3IsIGxpbmUgMjIyOCBvZiBhbGdvcml0aG0KCQl9Cgl9
compilation info
prog.cpp: In function 'void _Random_shuffle(_RanIt, _RanIt, _Diff*)':
prog.cpp:21:23: error: '_CSTD' was not declared in this scope
prog.cpp:21:29: error: expected ',' or ';' before 'rand'
prog.cpp:25:14: error: expected ')' before 'rand'
prog.cpp:27:3: error: '_STD' was not declared in this scope
prog.cpp:27:8: error: expected ';' before 'iter_swap'
stdout