diff --git a/docs/printabletypes.md b/docs/printabletypes.md index dca4c8cd..5a63b5dc 100644 --- a/docs/printabletypes.md +++ b/docs/printabletypes.md @@ -1,16 +1,16 @@ # Making Types Printable -Catch is capable of using user defined print functions and overloads. +Catch can print many standard types out of the box, but it is also capable of using user defined print functions and overloads. -## Using ostreams +## Using ostream and operator<< -By default, catch will attempt to display types using an ostream overload is available. +By default, catch will attempt to display a variable of type `T` using an ostream overload if available. ```c++ -std::ostream& operator<<(std::ostream&, MySpecialType const&); +std::ostream& operator<<(std::ostream&, T const&); ``` -## using toString +## Overloading Catch::toString If you don't want your type to work with ostreams, or Catch is unable to find the overload you provide, you may alternatively overload `Catch::toString`. The overload must appear **above** the include of `catch.hpp`. For example, if I want to provide @@ -23,7 +23,7 @@ would look like this: #include namespace Catch { -std::string toString(std::pair const p) { +std::string toString(std::pair const& p) { std::ostringstream oss; oss << '{' << p.first << ", " << p.second << '}'; return oss.str(); @@ -37,4 +37,4 @@ due to possible typos when typing `Catch` or `toString` ## Default output -If neither of the two conditions has been met, catch will output `{?}` by default. +If neither of the two conditions has been met, and catch does not provide a string conversion for the type, catch will output `{?}` by default.