tables::mtuple::mtuple

1) Default constructor

template <typename... Ks, typename... Vs>
mtuple<std::tuple<std::pair<Ks,Vs>...>>::mtuple()

1) Constructor with value-types.

template <typename... Ks, typename... Vs>
mtuple<std::tuple<std::pair<Ks,Vs>...>>::mtuple(const Vs... vs)

2) Constructor with tuple-of-values

template <typename... Ks, typename... Vs>
mtuple<std::tuple<std::pair<Ks,Vs>...>>::mtuple(
 const std::tuple<Vs...>& vs
)

3) Constructor with tuple-of-primitives (by rvalue)

template <typename... Ks, typename... Vs>
mtuple<std::tuple<std::pair<Ks,Vs>...>>::mtuple(
 std::tuple<Vs...>&& vs
)

4) Copy constructor

template <typename... Ks, typename... Vs>
mtuple<std::tuple<std::pair<Ks,Vs>...>>::mtuple(
  const mtuple<std::tuple<std::pair<Ks,Vs>...>>& other
)

5) Move constructor

template <typename... Ks, typename... Vs>
mtuple<std::tuple<std::pair<Ks,Vs>...>>::mtuple(
  mtuple<std::tuple<std::pair<Ks,Vs>...>>&& other
)

Example

Code

#include <cpptables/table.hh>

using namespace tables;
using namespace std;

struct k0 {};
struct k1 {};
struct k2 {};
  
// The table type
using mtuple_t = row<
  pair<k0,string_view>,
  pair<k1,double>,
  pair<k2,double>
>;

void mtuple_ctrs()
{
  // Default constructor.
  mtuple_t empty;

  // Construct with values
  const mtuple_t mt0("Foo", 0.1, 0.2);

  using ps_t = typename mtuple_t::ps_t;

  // Construct with tuple of primitive-types
  ps_t ps = make_tuple<string_view,double,double>("Bar",0.3,0.4);
  const mtuple_t mt1(ps);

  // Construct with tuple of primitive-types (by rvalue)
  mtuple_t mt2(move(ps));

  // Copy constructor
  mtuple_t mt3(mt2);

  // Move constructor
  mtuple_t mt4(move(mt2));
}