c++ - GCC 4.2.2 unsigned short error in casting -
this line of code isn't compiling me on gcc 4.2.2
m_pout->m_r[i][j] = min(max(unsigned short(m_pin->m_r[i][j]), 0), ((1 << 15) - 1));
error: expected primary-expression before ‘unsigned’
however if add braces (unsigned short)
works fine.
can please explain type of casting (allocation) being done here?
why isn't lexical parser/compiler able understand c++ code in gcc?
can suggest "better" way write code? supporting gcc 4.2.2 (no c++11, , cross platform)
i think bathsheba's answer @ least misleading. short(m_pin->m_r[i][j])
cast. why unsigned
messing things up? it's because unsigned short
not simple-type-specifier. cast syntax t(e)
works if t single token, , unsigned short
2 tokens.
other types spelled more 1 token char*
, int const
, , therefore these not valid casts: char*(0)
, int const(0)
.
with static_cast<>
, < >
balanced type can named sequence of identifiers, static_cast<int const*const>(0)
Comments
Post a Comment