This might be something too obvious. However, I couldn\'t find the specific answer though many stackoverflow threads talk about different aspects of this.
typede
1) The
sizeof
operator yields the number of bytes in the object representation of its operand. The operand is either an expression, which is an unevaluated operand (Clause 5), or a parenthesized type-id. (emphasis mine)
In your case, it is a type-id so it must be parenthesized. What a type-id is is described in 8.1 Type names [dcl.name].
sizeof tmp
should be sizeof (tmp)
.
As in
if (c <= sizeof tmp)
should be if (c <= sizeof (tmp))
.
Yup, pretty "obvious and straightforward".