| Jon Stewart on 18 Jul 2003 17:19:01 -0000 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| [ALACPP] oh, the tragedy |
Ah, COM. So, I'm starting to wrap the ol' VARIANT datatype.
class VarWrapperClass {
VARIANT& Var;
VarWrapperClass& operator=(bool val) {
Var.vt = VT_BOOL;
Var.boolVal = val;
return *this;
}
operator const bool*() const {
if(VT_BOOL == Var.vt) {
return reinterpret_cast<const bool*>(Var.pBoolVal);
}
return 0;
}
}
It mixes the hell out of semantics, but I don't care. I'll have do so much
VARIANT conversion that any kind of convenient shorthand is worth it.
So... I've got an if-statement that looks like this:
if(somePtr && 1 == somePtr->Count &&
(const bool* val = VarWrapperClass(somePtr->Array[0])))
{
SetSomeBool(*val);
}
It will not compile. This if-statement will, however:
if(const bool* val = VarWrapperClass(somePtr->Array[0]))
{
SetSomeBool(*val);
}
The compiler simply gets confused by the creation and conversion in the
compound if expression. Compiling is such sweet sorrow.
<sigh>
Jon
--
Jon Stewart
stew1@xxxxxxxxxxx
_______________________________________________
alacpp mailing list
alacpp@xxxxxxxxxxx
http://lists.ellipsis.cx/mailman/listinfo/alacpp