Retourner au contenu associé (journal : Constexpr versus template)
Posté par Clément V le 23 avril 2021 à 23:25. En réponse au journal Constexpr versus template. Évalué à 4.
Comme l'a fait remarquer SChauveau, les fold-expressions utilisent des packs. Il faut donc en créer un, par exemple avec make_integer_sequence :
template <typename T> struct count_impl; template <int... Ints> struct count_impl<std::integer_sequence<int, Ints...>> { static constexpr int value = (0 + ... + Ints); }; template <int N> constexpr int count = count_impl<std::make_integer_sequence<int, N+1>>::value;
Mais ça utilise des templates avec plein de paramètres, sûrement très lourds. Alors qu'on pourrait simplement utiliser une boucle for.
template <int N> constexpr int count = [](){ int s = 0; for (int i = 1; i <= N; i++) s += i; return s; }();
Mais je n'ai pas fait de benchmarks pour comparer, peut-être que je me trompe.
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル
[^] # Re: et avec les fold-expressions ?
Posté par Clément V . En réponse au journal Constexpr versus template. Évalué à 4.
Comme l'a fait remarquer SChauveau, les fold-expressions utilisent des packs. Il faut donc en créer un, par exemple avec make_integer_sequence :
Mais ça utilise des templates avec plein de paramètres, sûrement très lourds. Alors qu'on pourrait simplement utiliser une boucle for.
Mais je n'ai pas fait de benchmarks pour comparer, peut-être que je me trompe.