+++ /dev/null
---- hugin-2013.0.0.old/src/tools/ParseExp.cpp 2013-10-27 10:19:02.000000000 +0100
-+++ hugin-2013.0.0/src/tools/ParseExp.cpp 2014-09-12 01:41:15.468973470 +0200
-@@ -50,37 +50,45 @@
- //power function\r
- struct lazy_pow_\r
- {\r
-- template <typename X, typename Y>\r
-- struct result { typedef X type; };\r
-+ template<class> struct result;\r
-+\r
-+ template <typename F, typename X, typename Y>\r
-+ struct result<F(X,Y)> { typedef X& type; };\r
- \r
- template <typename X, typename Y>\r
-- X operator()(X x, Y y) const\r
-+ X& operator()(X& x, Y y) const\r
- {\r
-- return std::pow(x, y);\r
-+ x= std::pow(x, y);\r
-+ return x;\r
- }\r
- };\r
- \r
- // modulus for double values\r
- struct lazy_mod_\r
- {\r
-- template <typename X, typename Y>\r
-- struct result { typedef X type; };\r
-+ template<class> struct result;\r
-+\r
-+ template <typename F, typename X, typename Y>\r
-+ struct result<F(X,Y)> { typedef X& type; };\r
- \r
- template <typename X, typename Y>\r
-- X operator()(X x, Y y) const\r
-+ X& operator()(X& x, Y y) const\r
- {\r
-- return std::fmod(x,y);\r
-+ x= std::fmod(x,y);\r
-+ return x;\r
- }\r
- };\r
- \r
- // if statement\r
- struct lazy_if_\r
- {\r
-- template <typename X, typename Y, typename Z>\r
-- struct result { typedef Y type; };\r
-+ template<class> struct result;\r
- \r
-- template <typename X, typename Y, typename Z>\r
-- X operator()(X x, Y y, Z z) const\r
-+ template <typename F, typename X, typename Y>\r
-+ struct result<F(X,Y,Y)> { typedef Y& type; };\r
-+\r
-+ template <typename X, typename Y>\r
-+ Y& operator()(X x, Y& y, Y& z) const\r
- {\r
- return x ? y : z;\r
- }\r
-@@ -89,13 +97,16 @@
- // wrapper for unary function\r
- struct lazy_ufunc_\r
- {\r
-- template <typename F, typename A1>\r
-- struct result { typedef A1 type; };\r
-+ template<class> struct result;\r
-+\r
-+ template<typename F, typename F1, typename A1>\r
-+ struct result<F(F1,A1)> { typedef A1& type; };\r
- \r
- template <typename F, typename A1>\r
-- A1 operator()(F f, A1 a1) const\r
-+ A1& operator()(F f, A1& a1) const\r
- {\r
-- return f(a1);\r
-+ a1= f(a1);\r
-+ return a1;\r
- }\r
- };\r
- \r