鉴于此代码
#include <iostream>
#include <format>
enum class Enum;
constexpr Enum operator~(Enum) { return static_cast<Enum>(5); }
enum class Enum { A = 1, B = ~Enum::A }; // line 8
// ^^^^^^^
int main() {
std::cout << std::format("{} and {}\n",
static_cast<int>(Enum::B), static_cast<int>(~Enum::A));
}
有没有办法告诉编译器不要将Enum::A
第 8 行视为int
,而是视为 type Enum
?换句话说,强制编译器使用自定义的operator~()
. 该程序输出-2 and 5
.