EDIT: How do I check if the parameter has been left out. Say if I use the int method, what if an int value is passed to that param. If it is an un-used param i'm guessing it defaults to 0. What if I want to pass an int of value 0?
No, it wouldn't have a default value of 0 or anything else, just a default type. To put a default value in, add default values to the function.

The idea is that you don't need to check if a parameter has been left out. (If you do need to, you use overloading.) It's like getline(); the default separator is '\n'. It doesn't need to know whether you actually passed '\n' or if the '\n' comes from the default value.

EDIT2: When I try to compile I get the following...

Code:
 error: default template arguments may not be used in function templates
Hmm, maybe you can only use them in classes. Sorry, I guess that won't work.