Vcsn
2.0
Be Rational
|
Go to the source code of this file.
Classes | |
struct | vcsn::labels_are_letters |
struct | vcsn::is_lal< Kinded > |
struct | vcsn::labels_are_nullable |
struct | vcsn::is_lan< Kinded > |
struct | vcsn::labels_are_one |
struct | vcsn::is_lao< Kinded > |
struct | vcsn::labels_are_ratexps |
struct | vcsn::is_lar< Kinded > |
struct | vcsn::labels_are_tuples |
struct | vcsn::is_lat< Kinded > |
struct | vcsn::labels_are_words |
struct | vcsn::is_law< Kinded > |
Namespaces | |
vcsn | |
Macros | |
#define | DEFINE(Abbrev, Name) |
Define the kinds, and auxiliary tools. More... | |
Typedefs | |
template<typename Kinded , typename R = Kinded> | |
using | vcsn::if_lal = typename std::enable_if< is_lal< Kinded >::value, R >::type |
template<typename Kinded , typename R = Kinded> | |
using | vcsn::if_lan = typename std::enable_if< is_lan< Kinded >::value, R >::type |
template<typename Kinded , typename R = Kinded> | |
using | vcsn::if_lao = typename std::enable_if< is_lao< Kinded >::value, R >::type |
template<typename Kinded , typename R = Kinded> | |
using | vcsn::if_lar = typename std::enable_if< is_lar< Kinded >::value, R >::type |
template<typename Kinded , typename R = Kinded> | |
using | vcsn::if_lat = typename std::enable_if< is_lat< Kinded >::value, R >::type |
template<typename Kinded , typename R = Kinded> | |
using | vcsn::if_law = typename std::enable_if< is_law< Kinded >::value, R >::type |
#define DEFINE | ( | Abbrev, | |
Name | |||
) |
Define the kinds, and auxiliary tools.
is_ABBREV<Kinded>: Whether Kinded has a specific kind_t
if_ABBREV<Kinded, R = Kinded>: Provide "overloading" on parameter types, for instance to require letter_t when labels_are_letters, and word_t when labels_are_words. See ratexpset::atom and ratexpset::atom_ for an example.
It is very tempting to turns these guys into members of context, but then, instead of "(if_lal<Ctx, letter_t> v)", one must write "(typename Cxx::template if_lal<letter_t> v)".