In this recipe, we learned how concepts can be used to ignore (or erasing) type-specific knowledge in favor of requiring a type to implemented a minimum set of features. These features can be enforce using SFINAE, a topic we discussed in greater detail in Chapter 4, Using Templates for Generic Programming.