Let\'s take the following code:
#include // std::string
using namespace std;
int main() {
//const::int i = 42; -> Error: \"expected
const::string is parsed as const ::string. ::string means to look up string in the global namespace, and since you have injected std into the global namespace, std::string is found and everything is dandy.
int is a built-in type and isn't in any namespace, so there's no such thing as ::int or std::int, hence the error.