1 --- hugin-2013.0.0.old/src/tools/ParseExp.cpp 2013-10-27 10:19:02.000000000 +0100
2 +++ hugin-2013.0.0/src/tools/ParseExp.cpp 2014-09-12 01:41:15.468973470 +0200
7 - template <typename X, typename Y>
\r
8 - struct result { typedef X type; };
\r
9 + template<class> struct result;
\r
11 + template <typename F, typename X, typename Y>
\r
12 + struct result<F(X,Y)> { typedef X& type; };
\r
14 template <typename X, typename Y>
\r
15 - X operator()(X x, Y y) const
\r
16 + X& operator()(X& x, Y y) const
\r
18 - return std::pow(x, y);
\r
19 + x= std::pow(x, y);
\r
24 // modulus for double values
\r
27 - template <typename X, typename Y>
\r
28 - struct result { typedef X type; };
\r
29 + template<class> struct result;
\r
31 + template <typename F, typename X, typename Y>
\r
32 + struct result<F(X,Y)> { typedef X& type; };
\r
34 template <typename X, typename Y>
\r
35 - X operator()(X x, Y y) const
\r
36 + X& operator()(X& x, Y y) const
\r
38 - return std::fmod(x,y);
\r
39 + x= std::fmod(x,y);
\r
47 - template <typename X, typename Y, typename Z>
\r
48 - struct result { typedef Y type; };
\r
49 + template<class> struct result;
\r
51 - template <typename X, typename Y, typename Z>
\r
52 - X operator()(X x, Y y, Z z) const
\r
53 + template <typename F, typename X, typename Y>
\r
54 + struct result<F(X,Y,Y)> { typedef Y& type; };
\r
56 + template <typename X, typename Y>
\r
57 + Y& operator()(X x, Y& y, Y& z) const
\r
62 // wrapper for unary function
\r
65 - template <typename F, typename A1>
\r
66 - struct result { typedef A1 type; };
\r
67 + template<class> struct result;
\r
69 + template<typename F, typename F1, typename A1>
\r
70 + struct result<F(F1,A1)> { typedef A1& type; };
\r
72 template <typename F, typename A1>
\r
73 - A1 operator()(F f, A1 a1) const
\r
74 + A1& operator()(F f, A1& a1) const
\r