Bogdan Slusarczyk <Bogdan.Slusarczyk@xxxxxxxxxxxx> writes: > void foo() > { > Filter< Predicate > filter( Predicate( _enum ) ); //error is here This line is declaring a function named "filter". Is that really what you want to do? http://en.wikipedia.org/wiki/Most_vexing_parse Ian