<p>I have a C++ template class that gets instantiated with 3 different type parameters. There's a method that the class needs to have for only one of those types and that isn't ever called with the two other types.</p>

<p>Will object code for that method be generated thrice (for all types for which the template is instantiated), or is object code generated only once (for the type with which it is actually used)?</p>

Usually, yes.
All the compiler really knows is that your program can create at least one instance of each class.  But it doesn't know what you will do with those instances.  So the code will almost certain be generated.
That said, if the methods in question are
not
virtual, and are never called, the
linker
can remove them with its normal dead code removal features.  So the generated (and compiled) code won't be in the final EXE.
Also this will largely depend on the C++ compiler being used because they're not all the same.