1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
template<typename T, typename T2>
bool are_equal(const T & _v1, const T2 & _v2)
{
return _v1 == _v2;
}
template<typename T, typename T2, typename... Args>
bool are_equal(const T & _v1, const T2 & _v2, Args... args)
{
return _v1 == _v2 && are_equal(_v1, args...);
}
struct foo
{
foo(int _bar){ m_bar = _bar; }
bool operator==(int _rhs){ return m_bar == _rhs; }
int m_bar;
};
bool operator==(int _lhs, const foo & _rhs){ return _rhs.m_bar == _lhs; }
int main()
{
foo myFoo(2);
cout << are_equal(1, 1, 1, myFoo, 2, 4, 1) << endl;
cout << are_equal(2, 2, 2, 2) << endl;
cout << are_equal(2.0f, 2, myFoo, 2.0) << endl;
return 0;
}
|