我应该包含<tuple>吗?

Nur*_*yev 2 c++ header

我是C ++的新手,我怀疑,这个问题当然不仅与有关tuple

因此,我看了一个大致包含以下代码的教程:

#include <tuple>

std::tuple<...> t(...)
Run Code Online (Sandbox Code Playgroud)

为什么#include <tuple>呢 特别是考虑到我们明确编写的事实std::tuple。没有那#include行代码就可以很好地编译...

Som*_*ken 10

因为<tuple>是一个头文件,其中包含tuple名称空间内的类std。只是因为您明确地说std::这并不意味着编译器将能够找到它(如果未包括在内)。

在这种情况下为您工作的原因可能是因为您包含的另一个标头已经包含<tuple>,因此您的代码是<tuple>间接包含的,或者与您构建的编译器自动包含了它。这不是标准所保证的,因此不应依赖。始终包含使代码可移植所需的标头。


πάν*_*ῥεῖ 9

您始终应包括在代码中使用的任何类型的特定标头。

没有那#include行代码就可以很好地编译...

无需偶然就可以编译代码,因为它可能已经包含在您在程序中使用的另一个标准标头中,并且不受该标准的保证,因此无法移植。

特别是考虑到我们明确编写的事实std::tuple

std::命名空间的显式使用对该规则没有任何意义。

您还应该始终清楚地使用std命名空间中的类或类型,以免陷入歧义性麻烦。

相关资料: