[ http://issues.apache.org/jira/browse/STDCXX-83?page=all ]
     
Martin Sebor resolved STDCXX-83:
--------------------------------

    Resolution: Fixed

Fixed and test case added with the referenced changes.

> std::generate_n() assumes Size can be decremented
> -------------------------------------------------
>
>          Key: STDCXX-83
>          URL: http://issues.apache.org/jira/browse/STDCXX-83
>      Project: STDCXX
>         Type: Bug
>   Components: 25. Algorithms
>     Versions: 4.1.2
>  Environment: all
>     Reporter: Martin Sebor
>     Assignee: Martin Sebor
>     Priority: Minor
>      Fix For: 4.1.3

>
> The requirement on the Size template argument to std::generate_n() in 
> lib.alg.generate, p2 is that it be convertible to an integral type which does 
> not imply that it be possible to decrement or otherwise modify its value. 
> I.e., the program below is expected to compile successfully.
> $ cat t.cpp && nice make t
> #include <algorithm>
> struct Size {
>     operator int() { return 0; }
> private:
>     void operator=(Size&);
> };
> template void std::generate_n (int*, Size, int (*)());
> int main () { }
> eccp -c -I/build/sebor/dev/stdlib/include/ansi -D_RWSTDDEBUG    
> -D_RWSTD_USE_CONFIG -I/build/sebor/eccp-3.6-11s/include 
> -I/build/sebor/dev/stdlib/include -I/build/sebor/dev/stdlib/../rwtest 
> -I/build/sebor/dev/stdlib/../rwtest/include 
> -I/build/sebor/dev/stdlib/tests/include  -A -x 
> --template_directory=/build/sebor/eccp-3.6-11s/lib -g  --display_error_number 
> --remarks --diag_suppress 193,236,340,401,261,479,487,678,679,815  t.cpp
> "/build/sebor/dev/stdlib/include/algorithm", line 431: error #349: no operator
>           "--" matches these operands
>             operand types are: -- Size
>       for (; __n > 0; --__n, ++__first)
>                       ^
>           detected during instantiation of "void std::generate_n(_OutputIter,
>                     _Size, _Generator) [with _OutputIter=int *, _Size=Size,
>                     _Generator=int (*)()]" at line 9 of "t.cpp"
> 1 error detected in the compilation of "t.cpp".

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to