Каждый поставщик компилятора использует определенные символы, которые идентифицируют компилятор и версию. Вы можете сделать проверку, используя эти символы.
Я знаю, например, что _MSC_VER предоставляет версию компилятора Microsoft C ++.
Что я также знаю, так это то, что библиотеки повышения используют этот тип выбора и адаптации функций.
Вы можете взглянуть на заголовки Boost Config, находящиеся в папке include, по пути: boost / config / *, особенно в select_compiler_config.hpp.
Используя эти символы, специфичные для компилятора, вы можете выбирать функции на этапе предварительной обработки кода.