[Patch] DR 438

Howard Hinnant hhinnant@apple.com
Fri Apr 27 19:50:00 GMT 2007


On Apr 27, 2007, at 2:31 PM, Paolo Carlini wrote:

> before implementing the allocator::construct / destroy removal, I  
> decided to take care of DR 438.
> Overall, I think the issue is rather clear, basically we want to  
> cast less than we used to do, that is only the first argument in  
> the templated constructor, neither in assign, insert, etc.
>
> I'd like to ask to Howard to have a look to the implementation of  
> his own DR, in particular to the testcases. Thanks in advance.

This looks good to me, including the test cases.

Note that the bit about static_cast<size_type>(f) is bogus (imho).   
By the time that went in I was simply tired of arguing about this  
issue.  I think it is relatively harmless.  However if you spot a use  
case where it actually makes a difference, please let me know, and we  
can file another DR to correct it.  I do not understand the rationale  
from Redmond on this part.  As far as I can tell the static_casting  
of f does not appear to me to actually do anything at all with  
respect to the second parameter and value_type.  And I have no idea  
what "fixes" means in the rationale.  vector<vector<int>>(5, 5) won't  
compile with or without static_cast<size_type>(the first 5).

Thanks Paolo.

-Howard



More information about the Libstdc++ mailing list