◐ Shell
clean mode source ↗

属性: likely, unlikely (C++20以上) - cppreference.com

提供: cppreference.com

その文を含む実行経路がそのような文を含まないあらゆる他の実行経路よりも可能性が高いまたは低い場合に対してコンパイラが最適化できるようにします。

構文

[[likely]] (1)
[[unlikely]] (2)

説明

これらの属性はラベルおよび文 (宣言文を除く) に適用できます。 これらは同じラベルまたは文には同時には適用できません。

1) その文を含む実行経路がそのような文を含まないあらゆる他の実行経路よりも可能性が高い場合に対してコンパイラが最適化できるように、文に対して適用されます。

2) その文を含む実行経路がそのような文を含まないあらゆる他の実行経路よりも可能性が低い場合に対してコンパイラが最適化できるように、文に対して適用されます。

実行経路はそのラベルへのジャンプを含む場合にのみそのラベルを含むとみなされます。

int f(int i) {
    switch(i) {
    case 1: [[fallthrough]];
    [[likely]] case 2: return 1;
    }
    return 2;
}

i == 2i の他のあらゆる値よりも可能性が高いとみなされますが、たとえ case 2: ラベルにフォールスルーしていても [[likely]]i == 1 に対しては効果を持ちません。