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

问题描述 投票:2回答:2

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

例如:

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

其中的实现类似于:

#define expr "expression"
auto str = expr _str;
c++ c++11 c++17
2个回答
4
投票

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

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

Demo


0
投票

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

auto str = expr ""_str;

将工作。

© www.soinside.com 2019 - 2024. All rights reserved.