Явный возвращаемый тип Lambda

Когда я пытаюсь скомпилировать этот код (VS2010), я получаю следующую ошибку: ошибка C3499: лямбда-выражение, для которого был задан тип возвращаемого значения void, не может возвращать значение

void DataFile::removeComments()
{
  string::const_iterator start, end;
  boost::regex expression("^\\s?#");
  boost::match_results<std::string::const_iterator> what;
  boost::match_flag_type flags = boost::match_default;
  // Look for lines that either start with a hash (#)
  // or have nothing but white-space preceeding the hash symbol
  remove_if(rawLines.begin(), rawLines.end(), [&expression, &start, &end, &what, &flags](const string& line)
  {
    start = line.begin();
    end = line.end();
    bool temp = boost::regex_search(start, end, what, expression, flags);
    return temp;
  });
}

Как указать, что лямбда-выражение имеет возвращаемый тип void. Более того, как мне указать, что лямбда имеет тип возврата «bool»?

ОБНОВЛЕНИЕ

Компилируется следующее. Может кто-нибудь сказать мне, почему это компилируется, а другое нет?

void DataFile::removeComments()
{
  boost::regex expression("^(\\s+)?#");
  boost::match_results<std::string::const_iterator> what;
  boost::match_flag_type flags = boost::match_default;
  // Look for lines that either start with a hash (#)
  // or have nothing but white-space preceeding the hash symbol
  rawLines.erase(remove_if(rawLines.begin(), rawLines.end(), [&expression, &what, &flags](const string& line)
  { return boost::regex_search(line.begin(), line.end(), what, expression, flags); }));
}
74
задан James McNellis 14 July 2012 в 17:57
поделиться