Q:

Check to see if all variable are equal to the same value in c++

What is the easiest way to compare multiple variable to see if they are all the same value? 
For example if var1 = 53 and I want to check if var2 or var3 is equal to var1 and each other? 
So far I have done this:
if(row1==row2==row3==row4==col1==col2==col3==col4==diag1==diag2)
    cout << "It is a magic square";
else
    cout << "Not a magic square";

However this doesn't seem to work. 
Thanks for you help. 

A:

In C++11, you could use variadic templates to define your own function:
#include <iostream>

template<typename T, typename U>
bool all_equal(T&& t, U&& u)
{
    return (t == u);
}

template<typename T, typename U, typename... Ts>
bool all_equal(T&& t, U&& u, Ts&&... args)
{
    return (t == u) && all_equal(u, std::forward<Ts>(args)...);
}

int main()
{
    int x = 42;
    int y = 42
    std::cout << all_equal(42, y, x);
}

A:

You can't chain == operators like that.  You would need to write, e.g.
if (row1==row2 && row2==row3 && row3==row4 && ...)

A:

I hope this below information will give an idea about how chain '==' operator works:
Since C language does not support chaining comparison like a==b==c; each equal to operator (==) operates on two operands only.  Then how expression a==b==c evaluates? 
According to operators associativity equal to operator (==) operates from left to right, that means associativity of equal operator (==) is left to right. 
Expression a==b==c is actually (a==b) ==c, see how expression (a==b) ==c evaluates? 
•(a==b) will be compared first and return either 1 (true) or 0 (false). 
•Then value of variable c will be compared with the result of (a==b). 
So we won't use chain '==' operator for multiple variable comparison.