Re[6]: вызов функций по указателю в for_each
От: SCRABER  
Дата: 17.03.12 10:12
Оценка:
Здравствуйте, Сыроежка, Вы писали:

С>Я не вижу здесь синтаксической ошибки. Данное предложение


С>void fn( const std::list<pf> &l, int x )


С>из определения функции fn корректно, тем более, что я просто скопировал сюда уже оттранслированный код.

С>А есть ли еще дполнительные сообщения кроме данного аскетского сообщения? Вполне возможно, что это сообщение — реакция на ошибку, которая расположена в коде перед этой строкой.
С>Есть два варианта. Сначала закоментируйте предложение в функции main, где происходит вызов алгоритма for_each. Если код скомпилируется, то значит данное сообщение об ошибке есть не является следствием синтаксической ошибке.

С>Второе — я хорошо помню, что компиляторы Borland не могли работать с квалификатором const у массивов и контейнеров, когда те использовались со стандартными алгоритмами. То есть компилятор при инстанциировании шаблонов не справлялся с квалификатором const.

С>Поэтому когда выполните первую проверку, и код у вас скомпилируется ( в чем я не сомневаюсь, если только вы не сделали опечатку ), то просто уберите в объявлении первого параметра функции квалификатор const

Никаких других ошибок компилятор не выдает.
Вообщем то он ругается не на объявление функции, а на строку

std::for_each( l.begin(), l.end(), [&x]( pf f ){ f( x ); } );


Если ее за комментировать, то все компилится.
void fn( const std::list<pf> &l, int x )
{

//     std::for_each( l.begin(), l.end(), [&x]( pf f ){ f( x ); } ); // it's ok
}


Слудующий код:

void fn( std::list<pf> &l, int x )
{
 std::for_each( l.begin(), l.end(), [&x]( pf f ){ f( x ); } ); // error
}


увы ошибка парсинга. Скорее всего компилятор не поддерживает синтаксиси лямбда-выражений.
Где можно посмотреть на синтаксис лямбда-выражений для С++, а то все встречается для С#?
Программер
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.