Error with a template function in a library

For completeness here is the .h file that I came up with

#include <Arduino.h>

template <class T>
void printBinBase(T var, boolean bytes = false, boolean newLine = false )
{
  for (int bit = (sizeof(var) * 8) - 1; bit >= 0; bit--)
  {
    Serial.print( var >> bit & 1);
    if (bytes)
    {
      if (!(bit & 7))
      {
        Serial.print(" ");
      }
    }
  }
  if (newLine)
  {
    Serial.println();
  }
}

template <class T>
void printBin(T var)
{
  printBinBase(var, false, false);
}

template <class T>
void printBinln(T var)
{
  printBinBase(var, false, true);
}

template <class T>
void printBinBytes(T var)
{
  printBinBase(var, true, false);
}

template <class T>
void printBinBytesln(T var)
{
  printBinBase(var, true, true);
}


and an example sketch illustrating its use

#include <PrintBin.h>

void setup()
{
  Serial.begin(115200);
  functions();
  uint32_t var = 0b01010101101010100101010110101010;
  Serial.print("printBin(var)\t");
  printBin(var);
  Serial.println("\nnewline from sketch");
  Serial.print("printBinln(var)\t");
  printBinln(var);
  Serial.println("\nnewline from sketch");
  Serial.print("printBinBytes(var)\t");
  printBinBytes(var);
  Serial.println("\nnewline from sketch");
  Serial.print("printBinBytesln(var)\t");
  printBinBytesln(var);
  Serial.println("\nnewline from sketch");
}

void loop()
{
}

void functions()
{
  Serial.println("NOTE : unlike Serial.print(var, BIN); thes functions print leading zeroes");
  Serial.println();
  Serial.println("printBin(var);      any integer variable as a series of bits");
  Serial.println("printBinln(var);    any integer variable as a series of bits with a newline");
  Serial.println("printBinBytes(var); any integer variable as a series of bits split into bytes");
  Serial.println("printBin(var);      any integer variable as a series of bits split into bytes with a newline");
  Serial.println();
  Serial.println("Examples");
  Serial.println();
}