From d60d4895f10c23267c75a8325d726d68a8581fe7 Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Wed, 25 Apr 2018 10:10:09 +0200 Subject: [PATCH] fix unresolved overload function in g++-7 --- alib2algo/src/automaton/properties/ReachableStates.h | 10 ++++++---- alib2algo/src/automaton/properties/UsefullStates.h | 10 ++++++---- .../src/automaton/simplify/UnreachableStatesRemover.h | 8 +++++--- .../src/automaton/simplify/UselessStatesRemover.h | 6 ++++-- 4 files changed, 21 insertions(+), 13 deletions(-) diff --git a/alib2algo/src/automaton/properties/ReachableStates.h b/alib2algo/src/automaton/properties/ReachableStates.h index 129ee70da6..74161caa41 100644 --- a/alib2algo/src/automaton/properties/ReachableStates.h +++ b/alib2algo/src/automaton/properties/ReachableStates.h @@ -30,16 +30,18 @@ public: /** * Removes dead states from FSM. Melichar 2.29 */ - template < class T, class SymbolType = typename automaton::SymbolTypeOfAutomaton < T >, class StateType = typename automaton::StateTypeOfAutomaton < T > > - static ext::set<StateType> reachableStates( const T & fsm ); + template < class T > + static ext::set < typename automaton::StateTypeOfAutomaton < T > > reachableStates( const T & fsm ); template < class SymbolType, class StateType > static ext::set<StateType> reachableStates( const automaton::MultiInitialStateNFA < SymbolType, StateType > & fsm ); template < class SymbolType, class StateType > static ext::set<StateType> reachableStates( const automaton::DFA < SymbolType, StateType > & fsm ); }; -template < class T, class SymbolType, class StateType > -ext::set<StateType> ReachableStates::reachableStates( const T & fsm ) { +template < class T > +ext::set < typename automaton::StateTypeOfAutomaton < T > > ReachableStates::reachableStates( const T & fsm ) { + using StateType = typename automaton::StateTypeOfAutomaton < T >; + // 1a ext::deque<ext::set<StateType>> Qi; Qi.push_back( ext::set<StateType>( ) ); diff --git a/alib2algo/src/automaton/properties/UsefullStates.h b/alib2algo/src/automaton/properties/UsefullStates.h index 6a3b40bade..49869b121a 100644 --- a/alib2algo/src/automaton/properties/UsefullStates.h +++ b/alib2algo/src/automaton/properties/UsefullStates.h @@ -30,14 +30,16 @@ public: /** * Removes dead states from FSM. Melichar 2.32 */ - template < class T, class SymbolType = typename automaton::SymbolTypeOfAutomaton < T >, class StateType = typename automaton::StateTypeOfAutomaton < T > > - static ext::set<StateType> usefullStates( const T & fsm ); + template < class T > + static ext::set < typename automaton::StateTypeOfAutomaton < T > > usefullStates( const T & fsm ); template < class SymbolType, class StateType > static ext::set<StateType> usefullStates( const automaton::DFA < SymbolType, StateType > & fsm ); }; -template < class T, class SymbolType, class StateType > -ext::set<StateType> UsefullStates::usefullStates( const T & fsm ) { +template < class T > +ext::set < typename automaton::StateTypeOfAutomaton < T > > UsefullStates::usefullStates( const T & fsm ) { + using StateType = typename automaton::StateTypeOfAutomaton < T >; + // 1a ext::deque<ext::set<StateType>> Qi; Qi.push_back( ext::set<StateType>( ) ); diff --git a/alib2algo/src/automaton/simplify/UnreachableStatesRemover.h b/alib2algo/src/automaton/simplify/UnreachableStatesRemover.h index 51cf3fd84b..5a9bfc0e4e 100644 --- a/alib2algo/src/automaton/simplify/UnreachableStatesRemover.h +++ b/alib2algo/src/automaton/simplify/UnreachableStatesRemover.h @@ -27,7 +27,7 @@ public: /** * Removes dead states from FSM. Melichar 2.29 */ - template<class T, class SymbolType = typename automaton::SymbolTypeOfAutomaton < T >, class StateType = typename automaton::StateTypeOfAutomaton < T > > + template < class T > static T remove( const T & automaton ); template < class SymbolType, class StateType > static automaton::DFA < SymbolType, StateType > remove( const automaton::DFA < SymbolType, StateType > & fsm ); @@ -37,8 +37,10 @@ public: static automaton::DFTA < SymbolType, RankType, StateType > remove( const automaton::DFTA < SymbolType, RankType, StateType > & dfta ); }; -template<class T, class SymbolType, class StateType > -T UnreachableStatesRemover::remove( const T & fsm ) { +template < class T > +T UnreachableStatesRemover::remove ( const T & fsm ) { + using StateType = typename automaton::StateTypeOfAutomaton < T >; + // 1a ext::set<StateType> Qa = automaton::properties::ReachableStates::reachableStates( fsm ); diff --git a/alib2algo/src/automaton/simplify/UselessStatesRemover.h b/alib2algo/src/automaton/simplify/UselessStatesRemover.h index 3d3489161e..175ed5b0f8 100644 --- a/alib2algo/src/automaton/simplify/UselessStatesRemover.h +++ b/alib2algo/src/automaton/simplify/UselessStatesRemover.h @@ -27,7 +27,7 @@ public: /** * Removes dead states from FSM. Melichar 2.29 */ - template<class T, class SymbolType = typename automaton::SymbolTypeOfAutomaton < T >, class StateType = typename automaton::StateTypeOfAutomaton < T > > + template < class T > static T remove( const T & automaton ); template < class SymbolType, class StateType > static automaton::DFA < SymbolType, StateType > remove( const automaton::DFA < SymbolType, StateType > & fsm ); @@ -37,8 +37,10 @@ public: static automaton::DFTA < SymbolType, RankType, StateType > remove( const automaton::DFTA < SymbolType, RankType, StateType > & dfta ); }; -template < class T, class SymbolType, class StateType > +template < class T > T UselessStatesRemover::remove( const T & fsm ) { + using StateType = typename automaton::StateTypeOfAutomaton < T >; + // 1. ext::set<StateType> Qu = automaton::properties::UsefullStates::usefullStates( fsm ); -- GitLab