Ну вы уж определитесь, что вы хотите, C, С++, C#, это 3 разных языка программирования, если C++ поддерживает библиотеки C, то C# это совсем другой язык программирования, C++/Cli в данном случае так же другой язык, который не имеет ничего общего с C# и позволяет генерировать управляемый код в C++.
Вообще я когда-то поставил Visual C++ 6.0, открыл сайт http://firststeps.ru и понеслось. Начал с туториалов, потом начал читать книги по C++. Страуструпа, Элджера, потом и до Александреску добрался.
А Керниган это C.
Ставьте Visual Studio 2013 Express и не мучайтесь (если под Win). К C++ Builder лучше вообще не прикасайтесь. CodeLite вообще IDE, а не компилятор. Предыдущие 2 идут со своими компиляторами. Ну и создавайте проекты консольных приложений.
template<typename T>
struct type2type { typedef T type; }
temlate<typename U, typename T>
U helper_func(T const& method, type2type<GetX>) { return [](){return 1;}; }
temlate<typename U, typename T>
U helper_func(T const& method, type2type<ToString>) { return [](){return "aaaa";}; }
// и вызов
template <typename T>
std::result_of<typename T::signature> func(T const& method) {
return helper_func<std::result_of<typename T::signature>, T>(method, type2type<T>());
}