最終更新日時(UTC):
が更新

履歴 編集

class
<utility>

std::piecewise_construct(C++11)

namespace std {
  struct piecewise_construct_t { };                                              // (1) C++11
  struct piecewise_construct_t { explicit piecewise_construct_t() = default; };  // (1) C++17

  constexpr piecewise_construct_t piecewise_construct = piecewise_construct_t(); // (2) C++11
  inline constexpr piecewise_construct_t piecewise_construct{};                  // (2) C++17
}

概要

piecewise_construct_tクラスは、オーバーロードのための空クラスである。

pairの要素型のコンストラクタ引数を引数にとるコンストラクタを呼び出すためにある。

#include <iostream>
#include <utility>
#include <tuple>

struct Point {
  int x, y;
  Point(int x, int y) : x(x), y(y) {}
};

std::ostream& operator<<(std::ostream& os, const Point& p)
{
  return os << '(' << p.x << ',' << p.y << ')';
}

int main()
{
  // pairの要素型のコンストラクタ引数をtupleで渡して構築
  std::pair<Point, Point> p(std::piecewise_construct,
                            std::make_tuple(1, 2),
                            std::make_tuple(3, 4));

  std::cout << p.first << ", " << p.second << std::endl;
}

出力

(1,2), (3,4)

バージョン

言語

  • C++11

処理系

参照