The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

В компиляторе G++ обеспечена поддержка C++17, opennews (?), 13-Янв-17, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


74. "В компиляторе G++ обеспечена поддержка C++17"  +3 +/
Сообщение от Аноним (-), 13-Янв-17, 16:27 
> Только сам язык C++ уже не лучший из-за неоправданной переусложнённости последними стандартами.

Выскажу неожиданную для вас мысль: Последние стандарты "не только лишь" усложняют язык, но и упрощают его!

Например, теперь можно писать:

    auto

вместо

    std::vector<SomeClass::SomeCrazyType>::const_iterator

----

    class A
    {
    private:
        int i = 5;
    };

вместо

    class A
    {
    public:
        A();
    private:
        int i;
    };

    A::A()
        : i(5)
    {
    }

----

    [int a](int b) -> bool { return a == b; }

вместо

    class SameAs
    {
    public:
        SameAs(int a);
        bool operator==(int b);
    private:
        int aa;
    };

    SameAs::SameAs(int a)
        : aa(a)
    {
    }

    bool SameAs::operator==(int b)
    {
        return a == b;
    }

----

    std::vector<int> GenerateData();

вместо

    void GenerateData(std::vector<int>& result);

благодаря move-семантике.

----

Да долго всякие упрощения перечислять можно.

Ответить | Правка | К родителю #2 | Наверх | Cообщить модератору

128. "В компиляторе G++ обеспечена поддержка C++17"  +1 +/
Сообщение от all_glory_to_the_hypnotoad (ok), 14-Янв-17, 18:33 

>[оверквотинг удален]
>         int aa;
>     };
>     SameAs::SameAs(int a)
>         : aa(a)
>     {
>     }
>     bool SameAs::operator==(int b)
>     {
>         return a == b;
>     }

Так делают только законченные д..бы, в подобных случаях не нужно отделять реализацию от определения. И вообще задача выше и до лямбд не предлавляла проблемы, практически любой проект имел кучу утиля для типовых предикатов и компараторов на темплейтах вроде

template<typename Type> class SameAs {
   SameAs(Type val): Val(val) { }

   bool operator==(const Type &val) const { reutrn val == val; }
private:
   Type Val;
};


>     std::vector<int> GenerateData();
> вместо
>     void GenerateData(std::vector<int>& result);
> благодаря move-семантике.

RVO/NRVO существуют уже достаточно давно и move семантика тут абсолютно ни при чем. А если хватит ума вхерачить явный move в реализации GenerateData(), то поломаешь NVRO и наплодишь ненужный move.

> Да долго всякие упрощения перечислять можно.

Все твои "урощения" не в тему, кроме мудотни с итераторами. Хотя с упрощениями даже этого делать не обязательно, в большинстве случаев хватает range-based for loop.

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру