boost::function, template и MS compiler 8.0, внимание: проблема компилятора! |
Здравствуйте, гость ( Вход | Регистрация )
boost::function, template и MS compiler 8.0, внимание: проблема компилятора! |
Iron Bug |
26.2.2009, 9:49
Сообщение
#1
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
Напоролась на багу с boost::function + MS compiler 8.0
Проявляется при применении template'ов функций и работе с boost::function при компиляции в MSVS 2005 SP1. Рассмотрим вот такой маленький пример:
В общем, казалось бы, ну куда проще... Задаём темплейт для функции, присваиваем указателю параметризованную функцию... В примере реализованы два указателя - один через boost::function, второй - классический, определённый как обычный указатель на функцию. Это прекрасно компилится, без единого ворнинга, НО! Сгенерированный компилятором MS 8.0 код даёт ран-тайм ошибку - нулевая функция в boost_func! А вот если закомментировать вызов boost_func - то всё нормально, "классический" указатель работает. Все остальные протестированные мной компиляторы дают нормальный код, который правильно выполняется. А вот мелкософтовский даёт такой потайной баг. Я также пробовала использовать "portable" синтакс библиотеки boost::function - то есть через boost::function1<bool,bool> - совершенно та же ситуация. Может, у кого есть 2008 MS студия - надо бы под ней проверить, как эта конструкция работает. Я её ставить не хочу пока, в ней много рюшек и никаких плюсов для C++, судя по описаниям релиза. Но если там поправлена эта бага - то, видать, придётся обновить компилер. Если и под ней не компилится - буду писать в boost. Пока вроде я не нашла упоминания такой баги у них в листах. |
|
|
Iron Bug |
26.2.2009, 12:46
Сообщение
#2
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
в основном связкой Mingw 3.4.5 + Eclipse пользуюсь. Хотя Mingw тоже уже начинает доставать, взять хотя бы отсутствие нормальных локалей... дык, у меня типа везде unicode. а в MinGW всё прекрасно, но у них своё понимание реализации стандартов ISO для unicode. что-то совпадает с остальными компилерами, что-то - нет. а украшать свой код кучей #ifdef'ов как-то не особо хочется. |
|
|
Текстовая версия | Сейчас: 28.4.2024, 9:53 |