tree b3502f10ab4a4745fb764f162a9501f39bdcadc0
parent 1de637fbdd4ab0051229707f855eee76f5a3d5da
author Niels Dekker <N.Dekker@lumc.nl> 1608813759 +0100
committer Niels Dekker <N.Dekker@lumc.nl> 1614255832 +0100

overload PrintTo for std::type_info and std::type_index

Included the string returned by their `name()` member function with the output of `PrintTo`.

Typical use case:

    std::unique_ptr<AbstractProduct> product = FactoryMethod();
    // Assert that the product is of type X:
    ASSERT_EQ(std::type_index{typeid(*product)},
              std::type_index{typeid(ProductX)});

Possible output in case of a test assert failure, now including the names of the compared type indices:

> error: Expected equality of these values:
>  std::type_index(typeid(*product))
>    Which is: 8-byte object <D0-65 54-8C F6-7F 00-00> ("class ProductY")
>  std::type_index(typeid(ProductX))
>    Which is: 8-byte object <40-64 54-8C F6-7F 00-00> ("class ProductX")

With help from Krystian Kuzniarek.
