How to make a function that returns the name of the past argument


I am looking for a way to create a naming service. Basically I need a function that accepts anything as an argument and returns me the name of the given argument. This can be anything, class, function, variable etc.

std::string name(T t)
  if t is a function
    return __func__ of t

  if t is a variable
    return name of variable.

Any suggestions?

C++ is not the right language to do this, it has no reflection capabilities at all, and you can't treat "anything, class, function, variable etc." uniformly. You can't pass a class to a function, or pass a function to a function, they are not objects.