#include <iostream>
#include <vector>
#include <string>
#include <cstring>


template <typename T>
std::size_t count(const std::vector<T> & _v, const T&& _value)
{
	std::size_t cnt = 0;
	for (const auto& it : _v)
	{
		if (it == _value) ++cnt;
	}
	return cnt;
}

template<>
std::size_t count(const std::vector<const char *> & _v, const char * const &&  _value)
{
	std::size_t cnt = 0;
	for (const auto& it : _v)
	{
		if (strcmp(it, _value) == 0) ++cnt;
	}
	return cnt;
}


int main()
{
	std::vector<int> vi = { 0, 1, 7, 13, 7, 9, 14, 7, 7 };
	std::vector<double> vd = { 0, 1, 0, 1, 1, 1, 0 };
	std::vector<std::string> vs = { "abc", "d", "e", "abc", "f", "abc", "abc" };
	std::vector<const char *> vpc = { "abc", "d", "e", "abc", "f", "abc", "abc" };

	std::cout << count(vi, 7) << std::endl;
	std::cout << count(vs, std::string("abc")) << std::endl;
	std::cout << count(vd, 1.0) << std::endl;

	const char * search = "abc";
	std::cout << count(vpc,(const char *) "abc") << std::endl;
}