Because your code uses the std::getline function to get the text, it does not accept line endings except those recognized by the current platform. This Stack Overflow article gives a nifty replacement for getline that recognizes all line endings. I suggest adding this would be a good addition to your excellent parser.
https://stackoverflow.com/questions/6089231/getting-std-ifstream-to-handle-lf-cr-and-crlf