Developer Tips
by Zhihao Yuan
The standard library has three tuple-like1
types: std::tuple
, std::pair
, and std::array
.
You can create objects of them by referencing only their class
template names thanks to Class Template Argument
Deduction:
using namespace std::string_literals;
auto tup = std::tuple(3, 1.0, false); // std::tuple<int, double, bool>
auto pr = std::pair("nice"s, 3L); // std::pair<std::string, long>
auto arr = std::array{ 0.1, 2., 4. }; // std::array<double, 3>
The above is equivalent to:
std::tuple tup(3, 1.0, false);
std::pair pr("nice"s, 3L);
std::array arr{ 0.1, 2., 4. };
If you still remember std::make_tuple
and std::make_pair
introduced in C++11, we don’t need them in non-generic code
unless you are creating tuple of references.
As a matter of fun, std::tuple()
creates an object of
std::tuple<>
. Does this remind you of the empty tuple
()
in Python?
1std::get<
N>(obj)
can be used for
getting the Nth element in an object of a tuple-like type.