entity self; .float f; ..float fp; ...float fpp; void try(entity e, ...float pp) { print("and: ", ftos( e.(e.(e.pp)) ), "\n"); } typedef float Float; void try2(entity e, ...Float pp) { print("and: ", ftos( e.(e.(e.pp)) ), "\n"); } // whereas the varargs are tested in vararg tests void main() { self = spawn(); self.f = 123; self.fp = f; self.fpp = fp; print(ftos( self.(self.fp) ), "\n"); print(ftos( self.(self.(self.fpp)) ), "\n"); try(self, fpp); try2(self, fpp); }