Поддержка run-time-cpu-dispatch
<Описание вашей идеи> Есть проблема - что сложно делать несколько реализаций (напирмер под sse-vs-avx) одной и той же функции. Было бы здорово уметь сказать комплияторо-линковщику:
- есть определяемая на старте функция
- вот список реализаций
- вот эта функция на старте (либо лениво?) выберет конечную реализацию
Главное что хочется - чтобы вызывающий код вызывал фиксированный символ, а указатель туда бы подставился прозрачно. Цель - минимизация расходов на runtim-cpu-dispatching
Заодно это поднимает вопрос чтобы в стандарте появились какие-нибудь std::cpu::have_avx512() а так constexpr варианты, а также функции или макросы std::cpu::can_have_avx512() (означает что запуск возможен на платформе с этим флагом), при std::cpu::can_have_avx512() == false гарантируется что ни один translation-unit не будет собран с -mavx512
<Примеры, где ваша идея будет полезна. Чем больше примеров и чем большую аудиторию они охватывают - тем лучше> Везде будет полезна
<Код c реализацией вашей идеи, если есть>
Полезные ссылки:
- https://quick-bench.com/ - онлайн бенчмарк, поможет вам продемонстрировать эффективность вашего подхода
- https://godbolt.org/ - онлайн дизассемблер
- https://eel.is/c++draft/ - черновик стандарта C++ с возможностью ссылаться на конкретные параграфы
- https://wg21.link/ - универсальная ссылка на международные proposal или баги в С++, например https://wg21.link/P1000 ссылается на документ P1000, а https://wg21.link/cwg100 на 100 баг в ядре языка