読者です 読者をやめる 読者になる 読者になる

ゆとりーなの日記

日記的な事を書いて行くと思はれる

operator +の自動生成󠄁のconstexpr化󠄁は詰んでゐなかつた

operator +の自動生成のconstexpr化は多分詰んでる - 名古屋313の日記にて詰んでゐるとされてゐたoperator +の自動生成󠄁のconstexpr化󠄁だが、C++14仕樣になつたら別に詰んでゐなかつた。

template <typename T>
struct addable {
  friend constexpr T operator +(const T &lhs, const T &rhs) {
    return T(lhs) += rhs;
  }
};

struct hoge : private addable<hoge> {
  constexpr explicit hoge(int x) : x_{x} {}
  
  constexpr hoge &operator +=(const hoge &rhs) {
    // かう書けば宜しい
    x_ += rhs.x_;
    return *this;
  }
  
  int x_;
};

#include <iostream>

int main() {
  constexpr auto a = hoge{313};
  constexpr auto b = hoge{211};
  constexpr auto c = a + b;

 auto d = hoge{311};
  d += c;

  std::cout << d.x_ << std::endl;
}

大勝󠄁利である。