How to create a generic constraint, that only allows some predefined basic data types. Something like this:

Code:
T SomeFunction<T>() where T : int, double, string, Guid
{
    // ...

    return (T)someValue; // someValue can be of type: int, double, string or Guid
}
So, is this even possible?