Краткая форма тела метода

Игорь Шаповал
Игорь Шаповал

В некоторых языках позволено записывать тело методы в краткой форме. 

int length(const std::string& s) {
    return s.size();
}

Вместо традиционой формы, можно писать вот так.

int length(const std::string& s) = s.size();

Также можно будет лаконично писать методы с switch expression.

int day_of_week(int day) = switch (day) {
    case MONDAY, FRIDAY, SUNDAY -> 6;
    case TUESDAY                -> 7;
    case THURSDAY, SATURDAY     -> 8;
    case WEDNESDAY              -> 9;
};

Было б классно иметь такую форму записи методов и в С++ языке.

 

 

 

 

 

-5
рейтинг
4 комментария
Sasha Sitnikov
int length(const std::string& s) = s.size();

В таком виде не получится, ибо неоднозначность возникает с pure virtual methods:

class Class {
  virtual int foo() = 0;
};
Sasha Sitnikov
Sasha Sitnikov

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0573r2.html

Здесь предлагается использовать =>

[](auto&& a, auto&& b) { return a.id() < b.id(); } // C++14
[](a, b) => a.id() < b.id()                        // this proposal
Sasha Sitnikov
Игорь Шаповал

В каком состоянии p0573r2.html? Есть ли какие-то сздвижения для включения в С++23?

Игорь Шаповал
Andrey

Игорь Шаповал, https://www.reddit.com/r/cpp/comments/bcowjq/status_of_p0573/?utm_medium=android_app&utm_source=share

Andrey
Обновлено 
Другие идеи
Группа создана, чтобы собирать предложения к стандарту C++, организовывать их внутренние обсуждения, помогать готовить их для отправки в комитет и защищать на общих собраниях в рабочей группе по С++ Международной организации по стандартизации (ISO).
Все предложения