Function templates allow functions to work with multiple data types. A function template defines a generic function using placeholder types that can then be used with different specific types. This improves code reusability and reduces duplication by writing functions that can work across types. The syntax uses the template keyword followed by angle brackets containing the placeholder type names. Function templates can have multiple parameters by specifying multiple placeholder types. They provide advantages like reusability, flexibility, and reduced code duplication.