The initial swapping problem used a generalized data type, T, to introduce the operational pattern necessary to swap the contents of two variables. The pattern works for all fundamental types (i.e., programmers can replace T with an int, double, etc.). In the initial problem, two glasses of liquid represented two variables in a program. Directly pouring the liquid from one glass to the other would overflow the second glass, demonstrating the need for a third, temporary glass. The behavior of program variables isn't quite the same - the data in the "pouring" variable overwrites the data in the receiving variable - but the idea is similar: a variable can't simultaneously save two distinct values. Just as we needed a temporary glass to solve the problem with glasses and liquid, we also need a third, temporary variable to solve the swapping problem in a computer program. The second version of the swapping problem replaces T with a structure object.
#include <iostream> #include <string> using namespace std; struct student { int id; string name; double gpa; }; void print(student temp) { cout << "ID: " << temp.id << endl; cout << "Name: " << temp.name << endl; cout << "GPA: " << temp.gpa << endl; } int main() { student s1 = { 123, "dilbert", 3.0 }; student s2 = { 987, "alice", 4.0 }; print(s1); print(s2); student temp = s2; s2 = s1; s1 = temp; print(s1); print(s2); return 0; }