Vcsn  2.1
Be Rational
join-automata.hh
Go to the documentation of this file.
1 #pragma once
2 
4 
5 namespace vcsn
6 {
7  namespace detail
8  {
9 
11  template <typename... Auts>
12  auto
13  join_automata(Auts&&... auts)
14  -> decltype(make_mutable_automaton(join(auts->context()...)))
15  {
16  return make_mutable_automaton(join(auts->context()...));
17  }
18 
20  template <typename... Auts>
21  using join_automata_t = decltype(join_automata<std::declval<Auts>()...>);
22 
23 
25  template <typename... Auts>
26  auto
27  meet_automata(Auts&&... auts)
28  -> decltype(make_mutable_automaton(meet(auts->context()...)))
29  {
30  return make_mutable_automaton(meet(auts->context()...));
31  }
32 
33  }
34 }
auto join(const ValueSet &vs) -> ValueSet
The join of a single valueset.
Definition: join.hh:44
auto meet_automata(Auts &&...auts) -> decltype(make_mutable_automaton(meet(auts->context()...)))
An automaton whose type is the meet between those of auts.
decltype(join_automata< std::declval< Auts >()...>) join_automata_t
The type of the join between automata of type Auts.
mutable_automaton< Context > make_mutable_automaton(const Context &ctx)
auto meet(const expressionset< Ctx1 > &a, const expressionset< Ctx2 > &b) -> expressionset< meet_t< Ctx1, Ctx2 >>
The meet of two expressionsets.
auto join_automata(Auts &&...auts) -> decltype(make_mutable_automaton(join(auts->context()...)))
An automaton whose type is the join between those of auts.