gpt4 book ai didi

c++ - 使用不带 std::literals 的后缀

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:28:38 25 4
gpt4 key购买 nike

我最近读到 C++14 中的 shms 等字面后缀已放在命名空间 std::文字。因此,如果我要使用它们,那么我应该包括命名空间或使用 std::literals:: 来表示这些后缀。但是,当我尝试以下程序(cpp.sh/9ytu)而不使用上述任何内容时,我得到了所需的输出:-

#include <iostream>
#include <thread>
using namespace std;
int main()
{
auto str = "He is there"s;
auto timegap = 1s;
cout << "The string is :-" << endl;
this_thread::sleep_for(timegap);
cout << str;
return 0;
}
/*Output:-
The string is :-
He is there
*/

如您所见,我没有包含任何 namespacestd::literals:: 我的程序仍然可以正常运行。我在 Orwell DevC++C++ ShellColiru 中尝试过,并且到处都得到相同的输出。有什么问题?

最佳答案

literalschrono_literals 是内联命名空间 - 参见 [time.syn]在这种特殊情况下:

inline namespace literals {
inline namespace chrono_literals {
// 20.12.5.8, suffixes for duration literals
constexpr chrono::hours h(unsigned long long);
[…]

因此,由于 using namespace std;,所有 UDL 都被找到。

关于c++ - 使用不带 std::literals 的后缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34618597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com