После c ++ 11 в шаблоне variadic появилась новая замечательная функция для решения подобных проблем.С c ++ 17 решение стало еще лучше.
Вот мой вариационный шаблон через складывающееся выражение для палиндрома:
template <typename ...ARG>
bool isPalindrome(ARG ...args)
{
std::string temp1 = "";
((temp1 += args), ...);
std::string temp2 = "";
((temp2 = args + temp2), ...);
return temp1 == temp2;
}
int main(int argc, char *argv[])
{
std::cout << isPalindrome('e','y', ' ', 'e', 'd','i','p',' ','a','d','a','n','a','d','a',' ','p','i','d','e',' ','y','e') << std::endl;
return 0;
}