As I learn more about C and C++ I'm starting to wonder: How can a compiler use newer features of processors without limiting it just to people with, for example, Intel Core i7's?
Think about it: new processors come out every year with lots of new technologies. However you can't just only target them since a significant portion of the market will not upgrade to the latest and greatest processors for a long time.
I'm more or less wondering how this is handled in general by C and C++ devs and compilers. Do compilers make code similar to
if SSE is supported, do this using it, else do that using the slower way or do developers have to implement their algorithm twice, or what?
More or less how do you release software that takes advantage of newer processor technologies while still keeping a low common denominator?