generator gen;
std::locale loc= gen().generate("ru_RU.koi8-r");
std::string utf8_string = to_utf<char>(koi8_string, loc);
// C
struct my_t {
void (*send_sms)(int);
void* context;
};
void my_test(struct my_t *m)
{
(m->send_sms)(545, m->context);
}
// C++
void send_sms_helper(int value, void* context) {
MainWindow *wnd = reinterpret_cast<MainWindow*>(context);
wnd->test(value);
}
MainWindow::MainWindow(QWidget *parent)...
{
my = my_new();
my->send_sms = send_sms_helper;
my->context = this;
Ну вы уж определитесь, что вы хотите, 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>());
}