regina::OutputBase< T > Struct Template Reference
Engine Structure

Provides a typedef to help identify where in the class hierarchy the output functions T::str() and T::detail() are implemented. More...

`#include <output.h>`

## Public Types

typedef std::remove_reference< decltype(test(std::declval< T >)))>::type | type
| The class in which T::str() and T::detail() are implemented. More...

## Detailed Description

### template<class T>
struct regina::OutputBase< T >

Provides a typedef to help identify where in the class hierarchy the output functions T::str() and T::detail() are implemented.

If T is a class derived (directly or indirectly) from some class Output<...>, then `OutputBase<T>::type` is defined to be this parent class Output<...>.

If T is not derived from any class Output<...>, then `OutputBase<T>::type` is defined to be T itself.

This helper class can be useful when trying to disambiguate between the implementation of str() that is inherited from Output, versus an extended implementation of str() (perhaps with more arguments) that is implemented in the class T itself.

Precondition
  T is a class or struct type.

The documentation for this struct was generated from the following file:

- output.h

Copyright © 1999-2016, The Regina development team
This software is released under the GNU General Public License, with some additional permissions; see the source code for details.
For further information, or to submit a bug or other problem, please contact Ben Burton (bab@maths.uq.edu.au).