简化版
class C {
public:
static constexpr std::array<C, 2> foo {{"1"_C, "2"_C}};
int x;
constexpr C(char c) { x=c; }
}
constexpr C operator"" _C(const char * str, size_t n) { return C(*str); }
这不会飞,因为在定义数组的那一行不理解文字。但是自由文字函数不能更早移动,因为那时 C 是未知的。
有没有不涉及在代码中添加可变参数模板或类似可怕的东西的解决方案?