Variadic templated method to extract values from a table
Yes, it is a good example

Variadic templates are associated with recursion by similarity to functional programming, where an recursion is a simple method of operating on sequences. Direct expansion is akin to a map or fold, or some other higher-order function.

It can be simplified even more

If you have a similar function 

/* find value or return default */
template &lt;typename Arg&gt; 
V value_at(Arg const &amp; key) const 
{
    auto const it = gate.find(key);
    if (it != gate.end()) {
        return it-&gt;second;
    }
    return {};
}


Then you can condense this down into a single expression

return vector&lt;V&gt;({value_at(args)...});


as that expands the parameter pack into multiple calls to value_at, which goes into vector's std::initializer_list&lt;V&gt; constructor.