//: C05:Box2.cpp // From "Thinking in C++, Volume 2", by Bruce Eckel & Chuck Allison. // (c) 1995-2004 MindView, Inc. All Rights Reserved. // See source code use permissions stated in the file 'License.txt', // distributed with the code package available at www.MindView.net. // Defines non-template operators. #include using namespace std; template class Box { T t; public: Box(const T& theT) : t(theT) {} friend Box operator+(const Box& b1, const Box& b2) { return Box(b1.t + b2.t); } friend ostream& operator<<(ostream& os, const Box& b) { return os << '[' << b.t << ']'; } }; int main() { Box b1(1), b2(2); cout << b1 + b2 << endl; // [3] cout << b1 + 2 << endl; // [3] } ///:~