宏上的用户定义的文字运算符

User-defined Literal Operator on Macros

本文关键字:文字 运算符 定义 用户      更新时间:2023-10-16

如何在扩展为某个文字表达式的宏上使用用户定义的文字运算符?

例如:

std::string operator""_str(const char* sz, std::size_t len)
{
return std::string(sz);
}

实施类似于:

#define expr "expression"
auto str = expr _str;

相邻的字符串文字会自动连接([lex.ext]/8(,因此

auto str = expr ""_str;

会起作用。

您需要另一个执行标记粘贴的宏:

#define CONCAT2(A, B) A##B
#define CONCAT(A, B) CONCAT2(A, B)
auto str = CONCAT(expr, _str);

演示