Просто создайте «фабричный» класс или функцию для создания соответствующих экземпляров вашего класса и скройте всю логику в файле, который реализует фабрику.
У некоторых локальных логических значений класса или файла, таких как «isSSE2Supported»или "isAVXSupported".При запуске вызовите некоторую функцию для инициализации этих значений.Затем ваша фабричная логика может проверить значения, чтобы определить, какой класс использовать.
Поскольку SSE2 всегда доступен на чипах x64, вам не нужно избегать всех ifdef.Вы можете избежать компиляции в некоторых классах для сборок x64.