Returning to the original question, the best two solutions I see at this point are as follows:
1)require the user to instantiate* Holder with an instance of derived using a constructor argument. This argument will always be the same.
2) Create an init macro that sets the correct value of held.
*I'm using the OO term here, not the template term.