A type specified by the template typename parameter.
In the second version of this constructor, an object used to initialize a new Agile instance. In the third version, the object that is copied to the new Agile instance. In the fourth version, the object that is moved to the new Agile instance.
The first version of this constructor is the default constructor. The second version initializes new Agile instance class from the object specified by the object parameter. The third version is the copy constructor. The fourth version is the move constructor. This constructor cannot throw exceptions.