Not so much for the actual code, just now there are two things to modify when the return type change. Macros can be iffy, search google for examples.
I didn't think of it before, but just use an anonymous namespace.
namespace{
template<class T>
void MyLCD(byte col, byte row, T t)
{
}
}
//...
void setup(){
MyLCD( 0, 1, 1 );
}
Seems by far the best as the IDE doesn't generate a prototype for it.