Task 2 : Templated Triple
Having learnt about classes, templates and concepts I want you to reimplement your Triple class so that it behaves more like a standard type and has a more sophisticated implementation and interface. Similar to Assignment 1, you will submit using a pull request on GitHub to this repo.
Requirements
- Must be templated for a single type
T - A way to add two points of different
T - A way to subtract two points of different
T - A way to multiply a point by a scalar of different
T - A way to divide a point by a scalar of different
T - A way to be print a formatted output using
std::cout - Using concepts ensure that
Tsatisfies only:std::integral
- or
std::floating_point
- or
TandUsupportT + UT - UU * TT / U
- and doesn't support
is_pointeris_referenceis_enumetc.
- and
Tsupports<<to anstd::ostream
Note: Let me know if the concept requirements are confusing
Bonus
- A way to be created using input from
std::cin - Allow three different type parameter; say
T,UandVfor the member variables while still maintaining the base requirements [hard]
Submitting
You can use Godbolt or bpt to build and test your struct. Once you have created your implementation:
- Clone this repo using
git clone https://github.com/MonashDeepNeuron/HPP.git. - Create a new branch using
git checkout -b triple/<your-name>. - Create a folder in the
/submissionsdirectory with your name. - Create a folder with the name of this task.
- Copy your mini project into this directory (bpt setup, cmake scripts etc.) with a
README.mdor comment in the code on how to run the program (verify it still works). There is a sample header file in/templatesthat you can use. - Go to https://github.com/MonashDeepNeuron/HPP/pulls and click 'New pull request'.
- Change the branches in the drop down so that your branch is going into
mainand `Create new pull request. - Give the pull request a title and briefly describe what you were able to implement and any struggles you had.
- On the right side-panel, under the 'Assignees' section, click the cog and assign me.
- Click 'Create pull request' and I'll take it from there.
Note: If you created a GodBolt instance, put the link in a comment at the top of the file (under your copy comments). This is generated by clicking the
sharebutton in the top-right-most corner of the webpage and clicking the 'short link' option.