Широко известно, что добавление объявлений / определений к namespace std
приводит к неопределенному поведению. Единственное исключение из этого правила - для специализаций шаблонов.
А как насчет следующего "хака"?
#include <iostream>
namespace std_
{
void Foo()
{
std::clog << "Hello World!" << std::endl;
}
using namespace std;
}
int main()
{
namespace std = std_;
std::Foo();
}
Действительно ли это четко определено в отношении стандарта? В этом случае я действительно ничего не добавляю к namespace std
, конечно. Кажется, каждый компилятор, на котором я это проверял, с радостью проглотил это.
Прежде чем кто-то сделает комментарий, похожий на "зачем ты это сделал?" - это просто для удовлетворения моего любопытства ...