Po raz kolejny, odpowiadając na inne pytanie, zapomniałem (z mojej winy), że literalne szablony operatorów są pobierane z zestawu deklaracji tylko wtedy, gdy znaleziono liczby całkowite lub pływające.Dosłowny szablon operatora: dlaczego nie ciąg?
Jako przykład:
template <char... C>
constexpr int operator "" _x() {
return 0;
}
Może być używany jako 10_x
, ale to nie może być używany ani jako foo_x
ani jako „foo” _x.
Apart z oczywistego powodu, że jest because the standard says that, jaka jest przyczyna techniczna (jeśli w ogóle), dla których nie są one brane pod uwagę przy kontaktach z napisowych?
Znalazłem także dla tego proposal (no, nie do końca to samo, ale daje pomysł), ale nadal to nie jest opcja.
Co uniemożliwia ich użycie w strunach?
Czy chodziło Ci o '" foo "_x'? –
@SebastianRedl Prawo, dzięki. – skypjack
Dla tego, co jest warte, 'foo_x' jest identyfikatorem, więc nigdy nie wywoływałoby UDL. – Barry