У меня есть фрагмент кода, который выглядит следующим образом. Скажем, в файле с именем example.cpp
#include <fstream>
#include <string> // line added after edit for clarity
int main() {
std::string filename = "input.txt";
std::ifstream in(filename);
return 0;
}
В окне, если я наберу cmd команду g++ example.cpp, она завершится с ошибкой. Это длинный список ошибок, которые я думаю в основном из-за того, что компоновщик жалуется на невозможность конвертировать из string в const char*.
Но если я запустил компилятор, используя следующий аргумент: g++ -std=c++17 example.cpp, он будет компилироваться и работать нормально, без проблем.
Что происходит, когда я запускаю прежнюю команду? Я предполагаю, что стандартная версия version компилятора С++ вызывается, но я не знаю, что? И как программист/разработчик, должен ли я всегда использовать последнюю команду с дополнительным аргументом?