Докато се опитвам да стартирам кодовия анализатор на Visual Studio 2012 на тази функция, срещам грешка C2248 на първия ред на функцията:
void InputFile::parseInputFile()
{
auto inputFile = std::ifstream(m_filename); // error occurs on this line
if (inputFile.is_open())
{
const auto fileBegin = std::istreambuf_iterator<char>(inputFile);
const auto fileEnd = std::istreambuf_iterator<char>();
const auto fileContents = std::string(fileBegin, fileEnd);
m_sectors.reserve(std::count(std::begin(fileContents), std::end(fileContents), '\n'));
const auto lineTokenizer = boost::tokenizer<boost::char_separator<char>>(fileContents, boost::char_separator<char>("\n"));
const auto symbolSeparator = boost::char_separator<char>(" ");
std::transform(std::begin(lineTokenizer), std::end(lineTokenizer), std::back_inserter(m_sectors),
[=](const std::string& line)
{
const auto symbolTokenizer = boost::tokenizer<boost::char_separator<char>>(line, symbolSeparator);
std::vector<std::string> symbols;
symbols.reserve(std::count(std::begin(line), std::end(line), ' '));
std::copy(std::begin(symbolTokenizer), std::end(symbolTokenizer), std::back_inserter(symbols));
return symbols;
});
}
}
Пълното съобщение за грешка е по-долу:
ParseInput.cpp(24): грешка C2248: 'std::basic_ifstream‹_Elem,_Traits>::basic_ifstream': няма достъп до частен член, деклариран в класа 'std::basic_ifstream‹_Elem,_Traits>' с [ _Elem=char, _Traits =std::char_traits ], като същевременно се проверява, че елидираният конструктор за копиране 'std::basic_ifstream‹_Elem,_Traits>::basic_ifstream(const std::basic_ifstream‹_Elem,_Traits> &)' може да се извика с [ _Elem=char, _Traits= std::char_traits ] C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\fstream(827) : вижте декларацията на 'std::basic_ifstream‹_Elem,_Traits>::basic_ifstream' с [ _Elem=char , _Traits=std::char_traits ] при конвертиране от 'std::basic_ifstream‹_Elem,_Traits>' в 'std::basic_ifstream‹_Elem,_Traits> &&' с [ _Elem=char, _Traits=std::char_traits ]
Съобщението за грешка не се задейства, ако не изпълнявам анализ на код. Каква конкретна проверка задейства тази грешка и възможно ли е да я деактивирам, за да може анализът да завърши върху моя код?