?
=?ISO-8859-1?Q?Daniel_Sch=FCle?=
Hi all!
given the following code
#include <iostream>
using std::cout;
using std::endl;
struct X
{
X & foo(int x){ cout << x << endl; return *this; }
};
void bad(int x, int y)
{
cout << x << '\t' << y << endl;
}
int main()
{
int a = 1, b = 2, c = 3; // 1
cout.operator <<(a * b).operator <<(b * c).operator <<((a = 0, c = 0));
a = 1, b = 2, c = 3;
X x;
x.foo(a).foo(b).foo(c); // 2
a = 1, b = 2;
bad(a * b, a=0); // 3
return 0;
}
Is it safe to assume that 1 and 2 will produce on every C++
implementation the same output (no undefined behaviour here)?
Or may C++ Compiler compute all the values in () first (as it may do in
bad), and then invoke function foo?
thx in advance
-Daniel
given the following code
#include <iostream>
using std::cout;
using std::endl;
struct X
{
X & foo(int x){ cout << x << endl; return *this; }
};
void bad(int x, int y)
{
cout << x << '\t' << y << endl;
}
int main()
{
int a = 1, b = 2, c = 3; // 1
cout.operator <<(a * b).operator <<(b * c).operator <<((a = 0, c = 0));
a = 1, b = 2, c = 3;
X x;
x.foo(a).foo(b).foo(c); // 2
a = 1, b = 2;
bad(a * b, a=0); // 3
return 0;
}
Is it safe to assume that 1 and 2 will produce on every C++
implementation the same output (no undefined behaviour here)?
Or may C++ Compiler compute all the values in () first (as it may do in
bad), and then invoke function foo?
thx in advance
-Daniel