boost :: function в VS2010: ошибка C2039: «функция»: не является членом «boost» - PullRequest
2 голосов
/ 17 ноября 2011

INFO

Я бы хотел использовать boost :: function для передачи обратного вызова в качестве параметра, например, так:

void ReadPacket(
        boost::function<void (const boost::system::error_code&, Packet* p)> callback);

, а затем использовать его:

ReadPacket(boost::bind(
    &ServerSession::storePacket,
    this,
    _1,
    _2
    ));

В конце концов, после цепочки обратных вызовов я звоню

callback(ec, packet);

ПРОБЛЕМА

Я только что скомпилировал решение в Отладка и все выглядит ОК ...

но в Release Я получил много ошибок, упомянутых выше

BasicSession.h(30): error C2039: 'function' : is not a member of 'boost'
BasicSession.h(30): error C2061: syntax error : identifier 'function'
BasicSession.h(30): error C2059: syntax error : ')'
BasicSession.h(30): error C2143: syntax error : missing ')' before ';'

Я в замешательстве и разочарован.

ПРЕДЛОЖЕНИЕ

Я обнаружил, что в boost::function используется другой синтаксис.Например boost::function0 или boost::function1.Это было сделано из-за того, что VS2010 не поддерживает что-то (я не знаю, что именно)

Я прав?

Мне также нужно сделать это приложение переносимым и кроссплатформенным, так каквозможно.

повышение 1.47 и VS2010

Ответы [ 2 ]

3 голосов
/ 17 ноября 2011

В случае, если вы пропустили это, вот учебник по функции повышения.Если вы посмотрите на учебник, в нем будет указан «предпочтительный» и «портативный» синтаксис.Поскольку вы хотите, чтобы код был переносимым, вы можете выбрать последний.

2 голосов
/ 17 ноября 2011

решение boost::function4

...