C++ constexpr final 虚函数

C++ constexpr final virtual functions

我在派生的 C++ 中实现纯虚函数 class,并标记方法 final。我也想标记函数 constexpr,但标准似乎不允许这样做。

是否有任何实际原因导致编译器难以实现这一点?还是由于通常的“此功能不被认为重要到足以添加到标准”的想法而省略了这样的功能?

根据评论,我原来的问题似乎没有说清楚我问的是 constexpr final 函数。以下代码说明了我要编译的内容:

struct A {
    virtual int foo() const;
};

struct B : public A {
    // Note that this function is final, and is therefore no longer
    // polymorphic in types derived from B (e.g., the function call
    // no longer requires a lookup in the virtual method table
    // when the compile-time type is known to be derived from B)
    constexpr int foo() const final {
        return 0;
    }
};

请注意,这被标记为 的副本,因为在 C++20 中,以上代码可以使用或不使用 final 关键字进行编译。