Ограничивает ли функция C++11 std::количество аргументов, которые может иметь указатель на функцию?

Я использую бета-версию Visual Studio 11, и меня интересует ошибка компиляции i' m получаю сохранение объекта функции std::в моем классе.

typedef std::function<void (int, const char*, int, int, const char*)> MyCallback;

В моем классе есть

MyCallback m_callback;

Это прекрасно компилируется. Если я добавлю еще один аргумент в список, это не удастся.

typedef std::function<void (int, const char*, int, int, const char*, int)> MyCallback;

Ошибка::

>c:\program files (x86)\microsoft visual studio 11.0\vc\include\functional(535): error C2027: use of undefined type 'std::_Get_function_impl<_Tx>'
1>          with
1>          [
1>              _Tx=void (int,const char *,int,int,const char *,int)
1>          ]
1>          f:\development\projects\applications\my.h(72) : see reference to class template instantiation 'std::function<_Fty>' being compiled
1>          with
1>          [
1>              _Fty=void (int,const char *,int,int,const char *,int)
1>          ]
1>c:\program files (x86)\microsoft visual studio 11.0\vc\include\functional(536): error C2504: 'type' : base class undefined
1>c:\program files (x86)\microsoft visual studio 11.0\vc\include\functional(539): error C2027: use of undefined type 'std::_Get_function_impl<_Tx>'
1>          with
1>          [
1>              _Tx=void (int,const char *,int,int,const char *,int)
1>          ]
1>c:\program files (x86)\microsoft visual studio 11.0\vc\include\functional(539): error C2146: syntax error : missing ';' before identifier '_Mybase'
1>c:\program files (x86)\microsoft visual studio 11.0\vc\include\functional(539): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

Это динамически подключаемая библиотека, которая подготавливает данные для передачи другому приложению. Я, конечно, могу переработать формат данных, чтобы их можно было передавать с меньшим количеством аргументов, но мне было интересно, почему я вижу это ограничение?

Вернувшись к указателю на функцию в стиле c-,

 typedef void (*MyCallback)(int, const char*, int, int, const char*, int);

работает нормально.

14
задан BZor 10 April 2012 в 15:51
поделиться