A class template can have multiple parameters that all have defaults.
template
If all your template arguments have defaults like in your example, you could create a helper struct to extract them for you.
template
struct default_for_helper;
template class T, size_t N, typename... Args>
struct default_for_helper, N>
{
using type = std::tuple_element_t>;
};
template class T, size_t N>
using default_for = typename default_for_helper, N>::type;
Then use it like this:
options, int, std::string> o;