Simple Macro program I think

Okay, here's the entire error msg followed by the sketch.

sketch_may01a:5: error: variable or field 'printMany' declared void

void printMany(T first, Remainder ... remainder) {
^
sketch_may01a:5: error: 'T' was not declared in this scope

sketch_may01a:5: error: 'Remainder' was not declared in this scope

void printMany(T first, Remainder ... remainder) {
^
exit status 1
variable or field 'printMany' declared void

void printMany() {
  Serial.println(); // blank line after other arguments (if any)
}
template <typename T, typename ... Remainder>
void printMany(T first, Remainder ... remainder) {
  Serial.print(first);
  Serial.print(' '); // comment out if desired
  printMany(remainder...);
}

void setup() {
  Serial.begin(115200);
  delay(1000);

  float f {3.14};
  uint8_t u16 {10};
  int16_t i16 { -5001};
  const char str[] {"Hello World"};

  printMany(f, u16, i16, str);
  printMany(f, u16, i16);
  printMany(f, u16);
  printMany(f);
  printMany();
  Serial.println("done");
}
void loop() {
  // put your main code here, to run repeatedly:

}