Единственный раз, когда вы не знаете тип, это если тип foo определяется typedef - если это так, ваш пример должен это отражать. А зачем вам что-то зависеть от типа? Может быть, есть способ решить вашу реальную проблему, но вы еще не представили свою реальную проблему.