std::is_string_literal
来自 zh.cppreference.net
| 定义于头文件 <meta>
|
||
consteval bool is_string_literal( const char* p );
|
(1) | (自C++26起) |
consteval bool is_string_literal( const wchar_t* p );
|
(2) | (自C++26起) |
consteval bool is_string_literal( const char8_t* p );
|
(3) | (自C++26起) |
consteval bool is_string_literal( const char16_t* p );
|
(4) | (自C++26起) |
consteval bool is_string_literal( const char32_t* p );
|
(5) | (自C++26起) |
确定 p 是否指向一个字符串字面量对象中的元素。
结果按如下确定:
- 如果
p指向一个不能在常量表达式中使用的对象,返回false。 - 否则,如果
p指向字符串字面量对象的子对象,返回true。 - 否则,返回
false。
参数
| p | - | 一个字符指针 |
返回值
true如果 p 被静态确定指向一个字符串字面量,则为 false,否则为
。
示例
#include <meta>
int main()
{
constexpr const char* p = "";
constexpr const char a[] = "";
static_assert(std::is_string_literal(p));
static_assert(!std::is_string_literal(a));
static_assert(std::is_string_literal(LR"(wcahr_t)"));
static_assert(std::is_string_literal(R"(\N{CAT})"));
}
运行此代码
define_static_string |
(C++26) 将编译期字符串提升到静态存储,返回指向该静态字符串首字符的指针 |