Почему .NET не нравится эта функция шаблона C ++ / CLI? - PullRequest
1 голос
/ 03 марта 2010

В простом ванильном приложении WinForms (C ++ / CLI, установленном в / clr) у меня есть следующая функция шаблона, помеченная как «неуправляемая»:

#pragma managed(push, off)
#include <string>
template< class c >
const c& test_alloc()
{
   static c test_alloc;
   return test_alloc;
}
#pragma managed(pop)

Тогда в основном я использую его перед Application :: Run ():

test_alloc<int>();          // OK
test_alloc<std::string>();  // Fails: _CrtIsValidHeapPointer(pUserData) 

static int test_alloc работает нормально, но статическая строка test_alloc завершается с ошибкой «вы повреждаете кучу»: _CrtIsValidHeapPointer (pUserData) Может кто-нибудь объяснить мне, что здесь происходит?

Проблема фактически возникает, когда я пытаюсь использовать boost :: filesystem :: initial_path ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...