Компиляция с Visual Studio 2005, в Windows XP. Я добавляю следующие заголовки в мой файл "stdafx.h" следующим образом:
#include <atlbase.h>
#include <atlcom.h>
#include <atlcore.h>
#include <atlstr.h>
(технически такая же ошибка появляется только с включенным atlbase.h), которая выдает следующие ошибки:
error C2334: unexpected token(s) preceding '{'; skipping apparent function body
error C2062: type 'double' unexpected
в следующем коде:
struct CheckValue : public unary_function<pair<MetID,double>,void>{
CheckValue(double _expected) : m_Expected(_expected){}
inline void operator()(const pair<MetID,double> &_val){
m_CheckList.push_back( near( _val.second ) ? 0 : 1 );
}
inline bool near(double _val){ //here is location of both errors
return ( m_Expected - m_Epsilon < _val ) || ( _val < m_Expected + m_Epsilon );
}
const static double m_Epsilon;
const double m_Expected;
list<int> m_CheckList;
};
const double CheckValue::m_Epsilon = 0.00001;
Без этих строк проблем нет. Кто-нибудь хочет рискнуть догадаться, почему? Я почесал голову здесь и не могу продолжать писать модульные тесты без включенных файлов.