Собственно навеяно тем, что надо было приткнуть чужую шарповску либу к проекту на С++ ( Qt ).
Казалось бы все просто, возьми майкрософтовский компилятор, включи поддержку clr, и работай! Однако не все оказалось так просто, как видится это на первый взгляд.
Для начала что мы имеем(в моем случае):
+ MVSC 2012
+ Qt 5.3
+ mingw 4.8
+ mvsc 2012 opengl
+ mvsc 2012
+ mvsc 2013

А так же нормально документированную библиотеку на C#, которая ничего в NET не экспортирует. Ну не экспортирует, ну и ладно.
Для начала попробуем перевести наш проект в проект для студии, и просто напросто подцепить туда эти библиотеки, с помощью настроек проекта ( "Ссылки").
И естественно попытались собрать весь проект. Несложно догадаться, что ничего не вышло. Произошел конфликт макроса с названием функции ( в недрах QDate была вызвана функция min, а зачем-то хедеры windows сделали макрос ). Ну и ничего, undef перед подключением требуемых хедеров спасает, либо просто подключать надо раньше, и все будет нормально.
Но даже когда все собралось, начались проблемы уже в рантайме.
Qt имеет очень удобный синтаксис сигналов и слотов( по указателям ), и благодаря поддержку компилятором лямбда функций все становиться все просто прекрасно!
Но не сейчас.
Под гнетом CLR декодирование имен функций поменялось(скорее всего), и в итоге у нас воабще ничего не работало. Казалось бы, что использование директивы pragma , и все наши проблемы решены:

#pramga managed
//кусок кода требующий доступа в виртуальную машину NET
#pramga unmanaged
Но не на этот раз. Я точно не понял почему( свое предположение я высказал выше ), но такой код:

connect( edit, &QDateEdit::dataChanged, [this]( const QDate &date ) mutable -> void
{
  qDebug() << date;
}
в рантайме выдавал ошибку о несуществующем сигнале dataChanged. Однако если использовать старый синтаксис и заводить отдельно слоты, то все работало. Но в студии нету помощи по "этому синтаксису сигналов и слотов". Потому программирование превращалось просто в ад, ибо надо было дописывать все параметры к каждому сигналу и к каждому слоту. И ошибись хотябы на буковку: при компиляции все будет хорошо, но работать не будет, и лишь маленькая строчка в быстро бегущем логе поведует причину сего непотребства.
Дальше решение пришло само, и я не знаю насколько оно все таки правильное.
Я отделил часть, которая общается с NET ( там включен clr:oldSyntax ), и собрал её в статическую библиотеку, которую потом свободно подключил к текущему проекту. Только везде пришлось использовать один и тот же компилятор: mvsc 2012.
После такого и сигналы и слоты заработали с лямбдами, и подсветка с подсказками в QtCreator-e были исчерпывающими.
Но так как работа в этом направлении над проектом ещё не окончена, то могут и в этом способе возникнуть всякие подводные камни...
Может быть у вас уже был опыт в подобном совмещении языков, и вы можете подсказать более правильный способ взаимодействия этих языков?