【一人 C++20 Advent Calendar 2019】定数式からの仮想関数の呼び出しを許可【6日目】
一人 C++20 Advent Calendar 2019 6日目の記事になります。
定数式からの仮想関数の呼び出しを許可
定数式での仮想関数呼び出しが可能になりました。なりました!
struct X { virtual int value() const = 0; }; constexpr int twice(X const& x) { // 参照を経由して仮想関数を定数式で呼び出すことが可能 return x.value() + x.value(); } struct Y : X { constexpr int value() const { return 42; } }; int main(){ constexpr Y y; static_assert(twice(y) == 84); return 0; }
C++11 の時代から constexpr
やってる身としてはまさかこんな事が可能になるとは夢にも思ってませんでした…。
もう全部 constexpr
でいいんじゃ…。
サポートコンパイラ
- GCC 9
- Clang 9.0