char16_t和char32_t是std命名空间的一部分吗



我最近了解到,在C++中使用size_t而不是std::size_t是非标准的,因此不得不更改我的代码。我在其他一些答案中读到,char16_tchar32_t也被引入为typedef,但intellisense只在没有std::的情况下识别它们,我不知道它们来自哪个标头,除了C标头<uchar.h>,根据cppreference.com.

这些类型的前缀应该是std::吗?如果是,它们在哪个C++头中定义?

我在其他一些答案中读到char16_t和char32_t也被引入为typedefs

要么这些答案是错误的,要么你误解了你读到的内容(或者他们在谈论C(。

CCD_ 8和CCD_ 9是C++中的关键字(与size_t不同(。它们是基本类型,就像intfloat一样。它们是不同于所有其他类型的类型,但它们确实有一个底层类型(分别为std::uint_least16_tstd::uint_least32_t(。

在C11中,char16_tchar32_t是在报头<uchar.h>中定义的typedef。也许答案是关于C.

在C++11及更高版本中,char16_tchar32_t是C++语言本身的内置类型,就像charwchar_t一样。它们不是标准库的一部分,所以不,它们不在std::命名空间中,也不在任何头文件中定义。

最新更新