In visual studio c++, some headers seems to be included by default.
For example, I can use std::strncpy or std::string without including <string> or <cstring>, but I cannot use std::cout or std::min() without including <iostream> or <algorithm>.
Then, when I want to compile the source code on unix with g++, I get compilation error if I forgot to add the includes that visual studio did not warm me about because of its implicit includes.
Where does the default includes come from in visual studio? Is there a way to deactivate this behavior for future and existing projects? Note: my visual studio projects are not using precompiled headers.