В C ++ временные ссылки не могут быть привязаны к непостоянным ссылкам.
Main<int> &mainReference = Main<int>::tempFunction();
Здесь вы пытаетесь присвоить результат выражения rvalue непостоянной ссылке mainReference
, которая недопустима.
Попробуйте сделать это const