/*
 * Copyright ©2026 Soham Pardeshi. All rights reserved.
 * Permission is hereby granted to students registered for University of
 * Washington CSE 333 for use solely during Summer Quarter 2026 for
 * purposes of the course. No other use, copying, distribution, or
 * modification is permitted without prior written consent. Copyrights
 * for third-party components of this work must be honored. Instructors
 * interested in reusing these course materials should contact the author.
 */

#ifndef BOX_H_
#define BOX_H_

// A class template (slides 45-46, 51).  Box<T> is a factory for classes:
// Box<int> and Box<double> are two unrelated classes the compiler stamps
// out on demand.
template <typename T>
class Box {
 public:
  explicit Box(T v) : val_(v) {}
  T Get() const { return val_; }

 private:
  T val_;  // members can have the parameter type
};

#endif  // BOX_H_