I have a bit of logic that needs to work in a variety of environments. In particular, though, it seems that the libstdc++ that shipped with gcc 4.4.3 has has_trivial_assign, while later versions rename it to has_trivial_copy_assign. I need to figure out how to make my code use the correct template no matter which version it's built against.

Unfortunately I cannot simply check __GNUC__ and __GNUC_MINOR__. These test the compiler version, but in my case there may be a new compiler building against an older libstdc++ (long story). So I need something else I can check.

Any suggestions?