$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Howard Hinnant (hinnant_at_[hidden])
Date: 2004-09-04 13:07:10
On Sep 1, 2004, at 6:06 PM, Stefan Slapeta wrote:
>
> see http://tinyurl.com/5639d
>
> Has anybody a solution for this? Seems that all CWs have problems with 
> casts in combination with conversion functions.
I'm not clear on why this code is expected to work.
template<class T>
class value_initialized
{
   public :
     value_initialized() {}
     operator T&() const { return this->x ; }
     T& data() const { return this->x ; }
private:
     mutable T x;
} ;
template<class T>
void test (T const& z )
{
   value_initialized<T> const x ;
   static_cast<T&>(x) = z ;
}
int main()
{
     int y = 1;
     test(y);
}
5.2.9/1 says:
> The static_cast operator shall not cast away constness 
> (expr.const.cast).
And x is const value_initialized<int>.  Even though 
value_initialized<int> provides a const member function to do the 
conversion, does not use of static_cast<T>(const_u) prohibit casting 
from a const type to a non-const type?
-Howard