Ты спрашиваешь: можно ли изменять лексически исходный код, не используя препроцессор? :)
не очень понял, но вообще спрашиваю, можно ли допустим в зависимости от компайл тайм параметров изменять какие функции используются, так чтобы при этом их не убирать/добавлять в исходный код. То есть грубо говоря если ты передал T1 и T2 в какой то класс, но не передал T3 то две функции работали бы, а третья допустим noop была