#include <iostream>
#include <algorithm>
#include <vector>

template<typename Range, typename ValT>
bool contains( Range&& range, ValT&& value )
{
    using std::begin;
	using std::end;

    auto e = end(std::forward<Range>(range));
    return std::find(begin(std::forward<Range>(range)), e, std::forward<ValT>(value)) != e;
}

int main()
{
	std::cout << contains(std::vector<int>{1,2,3}, 3);
}