2017-03-16 35 views
56

upadłem na this page gdzie rozmowy autorem około normalizacji operatora "":Co to jest operator "" w C++?

Decyzja komisji C++ norm do standaryzacji operator "" było [...]

O czym on mówi? Nie mogę znaleźć żadnych informacji na ten temat i nie rozumiem, co to może oznaczać (przeciążenie ciągłych ciągów znaków?) Lub coś bardziej konceptualnego, które nie wpływa na ostateczne użycie języka?)

Odpowiedz

67

user-defined literals. Pozwalają one na tworzenie rzeczy jak std::string, std::chrono::durations lub każdy użytkownik zdefiniowany typ (można tworzyć własne literały) zamiast:

auto str = "Hello"s; // str is std::string("Hello") 
auto sec = 5s;  // sec is 5 std::chrono::seconds 

Wykaz dosłownych-operatorów świadczonych przez biblioteki standardowej, a ich dokumentacja może być znaleźć na dole strony z dokumentacją, którą połączyłem.

3

Jest to user-defined literal operator, które pozwoli wprowadzić nową literalną składnię opartą na istniejących literałach. Aby uzyskać więcej informacji, wyświetl this reference link.

+0

@BaummitAugen Myślę, że '36.0_mi' jest zdefiniowanym przez użytkownika dosłownym, czyż nie? –

+0

@ PeterA.Schneider: Przykłady odpowiedzi to '128u',' 128l', '128.0f' i' 0xBAD'. – user2357112

+0

@ PeterA.Schneider Tak, przykłady, o których mówiłem, zostały w międzyczasie usunięte. –