在我看来,使用未经审判的名称空间,只是有人在新名称空间中提出麻烦,而这种新名称的名声与原名空间相同,而且神秘地改变了许多方案的含义。 因此,为什么人们总是说:而不是:std:
。 它们是否真的意味着要说“我想要使用任何<条码>的<>条/条码>是手法,而不是根基吗?
我指的是:
In fred/Foo.h:
#include <string>
namespace fred {
class Foo {
public:
void aPublicMember(const std::string &s);
};
} // end namespace fred
In fred/Barh:
namespace fred {
namespace std { // A standard fred component
class string { // Something rather unlike the ::std::string
// ...
};
} // namespace std
class Bar {
public:
void aPublicMember(std::string &s);
};
} // namespace fred
In oops.cpp:
#include <string>
#include "fred/Bar.h"
#include "fred/Foo.h" // Oops, the meaning of Foo is now different.
这些人想要的是什么,还是我失踪了吗?
也许你会说,你绝不应命名一个名称空间std
。 而这种说法既好又好,但那时候,某些其他根基层的空间是什么? 任何人在任何地方是否都界定了哪一个底层名称?
为了澄清问题,我没有考虑告诉我的任何答案:std<>/code>是特殊的,因为我只是把它当作一个例子。 我谈论一个一般性问题,而Im则使用
std
作为说明这一问题的一种推进剂,尽管我确实承认这是一个相当开端的推进剂。