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

时间:2019-11-07 04:35:50

标签: c++ c++11 c++17

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

例如:

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

其中的实现类似于:

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

2 个答案:

答案 0 :(得分:6)

相邻字符串文字会自动连接在一起([lex.ext]/8),所以

auto str = expr ""_str;

会工作的。

答案 1 :(得分:4)

您需要另一个执行令牌粘贴的宏:

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

Demo

相关问题