C++11 の可変個引数テンプレートを使用して、以下を完成させることはできますか/* ??? */?
template<bool...v> struct var_and { static bool constexpr value = /* ??? */; };
コンパイル時にブール値パックをvar_and<v...>::value提供しますか?&&v
struct var_or<v...>に対しても同じことができます||か?
短絡評価(両方とも)は使えますか?
編集:受け入れられた回答への更新により、 C ++ 17の折りたたみ式が有効になることが追加されました
template<bool... v> constexpr bool var_and = (v && ...);
template<bool... v> constexpr bool var_or = (v || ...);
パラメータパックベースのアプローチでは、制限されたタイプの「短絡評価」のみが可能であるようです:var_or<true,foo(),bar()>呼び出しを 1 回だけインスタンス化しながら、と||の両方も呼び出します。foobar