2
簡化版初始化與用戶定義的字面
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); }
這並不飛constexpr陣列,因爲文字沒有在其中將陣列限定的線的理解。但是,自由文字函數不能提前移動,因爲C不知道。
是否有解決這個Gordian結,不涉及在代碼中添加可變參數模板或類似的東西?
可變參數模板和可怕的不應該在同一個句子! :) – GManNickG
作爲一個側面說明,我不認爲'_C'是一個允許的名稱,因爲它是下劃線+大寫字母,它是爲實現保留的。 – Xeo
@Xeo:我認爲'_C'是一個標識符,而不是一個名稱,因爲[在這裏討論](http://stackoverflow.com/questions/7947925/when-is-an-identifier-a-name-in- c),所以沒關係。該名稱將是「運營商」「_C」。 –