cpp-ru / ideas

Идеи по улучшению языка C++ для обсуждения
https://cpp-ru.github.io/proposals
Creative Commons Zero v1.0 Universal
89 stars 0 forks source link

constexpr virtual #373

Closed apolukhin closed 3 years ago

apolukhin commented 3 years ago

Перенос предложения: голоса +7, -0 Автор идеи: skryv-softserveinc

Эта возможность уже была реализована в GCC4: Предлагаю добавить поддержку полиморфных виртуальных вызовов этапа компиляции с модификатором constexpr. https://stackoverflow.com/questions/34828161/can-virtual-functions-be-constexpr https://pastebin.com/gBRT31VG

    struct X 
    {
        constexpr virtual int f() const
        {
            return 0;
        }
    };
    struct A : public X
    {
        constexpr virtual int f() const
        {
            return 1;
        }
    };
    int main()
    {
        A x;
        static_assert(x.f() == 1, "match");
        return 0;
    }
apolukhin commented 3 years ago

yndx-antoshkka, 29 октября 2018, 16:26 Над этой вещью уже работают, скорее всего появится в C++20