コンポーネントのマップがあります。コンポーネントは、いくつかのデータを持つ POD タイプです。各コンポーネントには一意の識別子があります。マップは、特定のタイプのコンポーネントを一度に 1 つだけ所有できます。そのため、マップの所有コンポーネントを照会できるようにしたいと考えています。これは私がこれを達成するために使用しているコードです:
template <typename T>
bool has()
{
auto found = map.find(T::tag);
if (found != map.end()) return true;
else return false;
}
これにより、次のような厄介なコードが生成されます。something.has<Component<int>>() && something.has<Component<float>>() ... etc;
コードの乱雑さを軽減するために、可変個引数テンプレートを利用したいと考えています。
template <typename T, typename... Args>
bool hasz()
{
has<T>();
has<Args>()...; /* expected ‘;’ before ‘...’ token */
}
has<Args>()...
(疑似) に展開すべきではありませんhas<Args[0]>(), has<Args[1]>(), etc...
(これは正当な構文になります)? そして、これを行うことはまったく可能ですか?