This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: cast to an enum does not throw errors even for invalid values


John Love-Jensen wrote:

That, obviously, is NOT what you desire.  You want some insurance that the
right hand value is checked and verified to be cast to the left hand BODY
value.
It is, perhaps, unfortunate that the compiler does not synthesize this for
you.  But that's just not C++.

See the following code:


struct Struct1
{
int a, b ;
} ;
struct Struct2
{
int a, b ;
} ;
int main ( void )
{
Struct1 s1 ; Struct2 s2 ;
s1 . a = 2 ; s1 . b = 3 ;
// s2 = static_cast < Struct2 > ( s1 ) ; // gives error: no matching function for call to ‘Struct2::Struct2(Struct1&)’
}


So the compiler itself checks whether it is possible to convert one struct value to another when a static cast is requested. Similarly for classes. I feel GCC can implement the same for enum-s too.

If it is not part of the C++ definition, then please tell me where I can include a request for such a provision in the next C++ standard.

Shriramana Sharma.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]