#include <iostream>
#include <algorithm>
#include <iterator>

template <typename T, typename... Args>
bool allequal(T a, Args... rest)
{
    std::initializer_list<T> values = {a, rest...};
    return std::adjacent_find(begin(values), end(values), std::not_equal_to<T>()) == end(values);
}

int main()
{
	std::cout << allequal(3, 2, 3, 3);
}