При попытке запустить анализатор кода 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]
Сообщение об ошибке не появляется, если я не выполняю анализ кода. Какая конкретная проверка вызывает эту ошибку, и можно ли отключить ее, чтобы можно было выполнить анализ моего кода?