Code is http://dpaste.dzfl.pl/73bd7002. And I can't understand why compiler instantiates SimpleFSM.execTransition!(), line #30 - I expected it would be instantiated only if template parameters were wrong, but it occurs always. Does compiler instantiates ALL possible template specialization?