Этот вопрос касается функции [[likely]]
/[[unlikely]]
С++ 20, а не макросов, определяемых компилятором.
В этих документах (cppreference) приведен только пример их применения к коммутатору. -деловое заявление. Этот пример с переключателем отлично компилируется с моим компилятором (g++-7.2), поэтому я предполагаю, что компилятор реализовал эту функцию, хотя официально она еще не представлена в текущих стандартах C++.
Но когда я использую их так: if (condition) [[likely]] { ... } else { ... }
, я получаю предупреждение:
«предупреждение: атрибуты в начале оператора игнорируются [-Wattributes]».
Итак, как мне использовать эти атрибуты в операторе if-else?
if(...) A else B
наif (not ...) B else A
. И это сломает конвейер, тогда он будет медленным. Вот пример: godbolt.org/z/WcPbPv< /а> - person HarryLeong   schedule 28.12.2019