On 10/24/2010 5:16 AM, Simen kjaeraas wrote:
Austin Hastings <[email protected]> wrote:

If Decider uses Option1.sizeof, does any Option1 code get emitted?

For sizeof to be known, the template would have to be instantiated, yes.

Instantiated does not necessarily imply emitting code, I think. (Of course, this is why I asked - to find out the compiler behavior and expectations.)

If Decider uses a static method of Option1, does any more of the
Option1 code get emitted?

As with the first two, it would have to be instantiated.


Now, I have the feeling this is not really what you're asking for. What
do you mean by 'code gets emitted'? Perhaps you could give a reduced
example?



What I am trying to do is to pass a set of expected behavior to a template. The template would make a decision based on memory versus performance as to which of several possible implementations to use.

For example, a list might be implemented as a dynamic array, or as a linked list (or ... or... or...).

If I asked for a list with single-ended insert/remove, then a dynamic array is going to win on overhead. If I ask for insert-in-the-middle, then the linked list would win on performance.

Ideally, each of the option templates would somehow provide a set of metrics so I can ask "hey, for 100 elements, what are your memory/performance metrics?"

Which leads to wondering how much of the metric has to be outside the option template to avoid inadvertently generating extra object code that won't get used.

=Austin

Reply via email to