summaryrefslogtreecommitdiffstats
path: root/src/xmlpatterns/data/qabstractfloatcasters.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/xmlpatterns/data/qabstractfloatcasters.cpp')
-rw-r--r--src/xmlpatterns/data/qabstractfloatcasters.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/xmlpatterns/data/qabstractfloatcasters.cpp b/src/xmlpatterns/data/qabstractfloatcasters.cpp
index 62477eb..2d20a49 100644
--- a/src/xmlpatterns/data/qabstractfloatcasters.cpp
+++ b/src/xmlpatterns/data/qabstractfloatcasters.cpp
@@ -63,9 +63,19 @@ template <const bool isDouble>
Item BooleanToAbstractFloatCaster<isDouble>::castFrom(const Item &from,
const QExplicitlySharedDataPointer<DynamicContext> &context) const
{
+#if defined(Q_CC_RVCT)
+ // RVCT doesn't like using template parameter in trinary operator when the trinary operator result is
+ // passed directly into another constructor.
+ bool tempDouble = isDouble;
+ if(from.template as<AtomicValue>()->evaluateEBV(context))
+ return tempDouble ? toItem(CommonValues::DoubleOne) : toItem(CommonValues::FloatOne);
+ else
+ return tempDouble ? toItem(CommonValues::DoubleZero) : toItem(CommonValues::FloatZero);
+#else
if(from.template as<AtomicValue>()->evaluateEBV(context))
return isDouble ? toItem(CommonValues::DoubleOne) : toItem(CommonValues::FloatOne);
else
return isDouble ? toItem(CommonValues::DoubleZero) : toItem(CommonValues::FloatZero);
+#endif
}