Regina 7.3 Calculation Engine
regina::detail::RetriangulateActionTraits< Object, Action, FirstArg > Struct Template Reference

A traits class that analyses callable objects that are passed to retriangulation or link rewriting functions. More...

Detailed Description

template<class Object, typename Action, typename FirstArg = typename CallableArg<Action, 0>::type>
struct regina::detail::RetriangulateActionTraits< Object, Action, FirstArg >

A traits class that analyses callable objects that are passed to retriangulation or link rewriting functions.

Recall that the initial arguments for such a callable object must be either (a) a single triangulation/link, or (b) a text signature (e.g., an isomorphism signature) followed by a triangulation/link. The callable object may take its triangulation/link by value, const reference or rvalue reference; however, if it takes a signature also then this must be by (const std::string&).

This struct provides a boolean compile-time constant valid, which is true if and only if the initial arguemnt(s) to Action are acceptable as outlined above (i.e., an argument of the underlying Object class for actions that take a triangulation/link, or a const string reference and an Object for actions that take a text signature also).

If valid is true, then this struct also provides a boolean compile-time constant withSig, which is true if and only if the action takes both a text signature and a triangulation/link. If valid is false then the boolean constant withSig will still be present, but its value is not defined.

Template Parameters
Objectthe class providing the retriangulation or link rewriting function, such as regina::Triangulation<dim> or regina::Link.
Actionthe type of a callable object that is passed to the retriangulation/rewriting function.
FirstArgthe type of the first argument to Action; you should not specify this directly, but instead allow the compiler to deduce it.

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

Copyright © 1999-2023, 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).