C++ how to generate all the permutations of function overloads?

With C++14, you may do: struct Date { public: Date(const Year& year, const Month& month, const Day& day) : d(day), m(month), y(year) {} template <typename T1, typename T2, typename T3> Date(const T1& t1, const T2& t2, const T3& t3) : Date(std::get<Year>(std::tie(t1, t2, t3)), std::get<Month>(std::tie(t1, t2, t3)), std::get<Day>(std::tie(t1, t2, t3))) {} private: Day d; Month m; … Read more