众所周知,添加声明/定义会namespace std
导致未定义的行为。此规则的唯一例外是模板特化。
那么下面的“hack”呢?
#include <iostream>
namespace std_
{
void Foo()
{
std::clog << "Hello World!" << std::endl;
}
using namespace std;
}
int main()
{
namespace std = std_;
std::Foo();
}
就标准而言,这真的定义得很好吗?当然,在这种情况下,我真的没有添加任何东西namespace std
。我测试过的每个编译器似乎都乐于接受它。
在有人发表类似“你为什么要那样做?”的评论之前。——这只是为了满足我的好奇心……