首页 > 解决方案 > C ++ 20 Consexpr虚拟未编译

问题描述

这不应该在最新版本的 GCC 和 Clang 上在 C++20 下编译吗?

我知道 Visual Studio C++ 编译器尚不支持它。

但是,根据此列表:https ://en.cppreference.com/w/cpp/compiler_support它应该在 GCC 和 Clang 上没有问题。

#include <iostream>

struct Base {
    constexpr virtual ~Base() noexcept = default;

    [[nodiscard]] constexpr virtual int
    get_value() const noexcept = 0;
};

struct Derived
    : Base {
    [[nodiscard]] constexpr virtual int
    get_value() const noexcept override {
        return 5;
    }
};

int
main() {

    constexpr Derived a;
    constexpr Base const & b = a;
    constexpr auto c = b.get_value();

    std::cout << c << '\n';

    return 0;
}

标签: c++inheritancevirtualconstexprc++20

解决方案


推荐阅读