#include #include using namespace std; template void apply_to_argv(int argc, char ** argv, ftype fn){ for(int i = 0; i < argc; i++) fn(argv[i]); } int main(int argc, char ** argv){ auto print_with_length = [](char* arg){ cout << arg << " (" << strlen(arg) << " characters)\n"; }; int sum = 0; auto count_chars = [&sum](char* arg){ sum += strlen(arg); cout << "sum: " << sum << endl; }; apply_to_argv(argc, argv, print_with_length); apply_to_argv(argc, argv, count_chars); cout << "Total Characters: " << sum << endl; apply_to_argv(argc, argv, [](char* arg){ for(;*arg; arg++) *arg = toupper(*arg); }); apply_to_argv(argc, argv, print_with_length); char *like_argv[] = {"one", "two", "raccoon", "blender", "toaster"}; apply_to_argv(5, like_argv, print_with_length); apply_to_argv(5, like_argv, count_chars); cout << "Total Characters: " << sum << endl; return 0; }