C++ 包括STL而不乱丢垃圾全球范围

C++ 包括STL而不乱丢垃圾全球范围,c++,visual-c++,msvcrt,C++,Visual C++,Msvcrt,有没有一种方法可以包括STL,而不必在全局范围内定义诸如::size\u t?像\u security\u init\u cookie这样的实现项目对我来说很好,因为它们的标识符是保留的 vcruntime.h总是包含在内,这让我很困扰。我认为这样做根本不安全 在全球空间中有东西需要向后兼容。如果你改变这些全局事物的特征,就会出现链接时间问题。 方法是将全局空间留给语言和库实现,并将您的东西放入名称空间 如果使用fork STL,则必须维护每个版本并与之同步 而且vcruntime.h不是来自S

有没有一种方法可以包括STL,而不必在全局范围内定义诸如
::size\u t
?像
\u security\u init\u cookie
这样的实现项目对我来说很好,因为它们的标识符是保留的


vcruntime.h
总是包含在内,这让我很困扰。

我认为这样做根本不安全

在全球空间中有东西需要向后兼容。如果你改变这些全局事物的特征,就会出现链接时间问题。 方法是将全局空间留给语言和库实现,并将您的东西放入名称空间

如果使用fork STL,则必须维护每个版本并与之同步

而且
vcruntime.h
不是来自STL,而是与Windows相关的东西

您可以使用
std::size\t
但是:

#include <cstddef>
std::size_t i = 0;
#包括
标准:尺寸i=0;

但是
::大小\u t
无论如何都会在那里。

你能再详细一点吗?您是否试图避免在任何地方使用
std::
?FWIW,IMHO,避免多输入5个字符是不值得的。@NathanOliver相反。我想在任何地方都使用
std::
。哦,所以你想去掉标题可能放在全局空间中的名称。我不确定你能做什么,我希望有人知道一个神奇的宏,我可以定义它,将实现细节严格保留在实现中,最终用户无法访问。我想没有这样的宏。但您可以查看包含的头的源代码以确保安全。