Provide a workaround for the missbehaving gcc compiler when using decltype inside a template function with an assignment.

I have found a workaround for the gcc issue which prevent x3 from being usable with gcc.

It seems the compiler handles the assignment operator specially and can't resolve the type inside the decltype() inside a template function.

I didn't go through all the examples, I just updated the calc1.cpp example.
Tell me what you think of this. If the solution I proposed is viable, I'll patch the rest of the samples.