This is the problem:
SomeClass<Strategy1> sc();
That is a declaration of a function called sc
that takes no arguments and returns a SomeClass<Strategy1>
. This is commonly known as a vexing parse (but not the most vexing parse). What you want is:
SomeClass<Strategy1> sc;