用别名替换默认模板参数

时间:2018-01-31 16:47:01

标签: c++ templates

对于具有以下定义的模板,' typename Container = std :: deque' 似乎是默认的模板参数。在这种情况下,我可以使用别名吗?

add_reference :members, :group_auth_token, foreign_key: { to_table: :groups }, references: :auth_token 

我可以用Alias替换它吗?

template<typename T, typename Container = std::deque<T> >
class stack {
    // ...
}

更新: 如果C是模板,我很好奇如何传递模板参数。下面的答案实际上很好地回答了我的问题。

1 个答案:

答案 0 :(得分:3)

是的,您可以,但默认模板参数(即std::deque<T>)将丢失。

可能会越接近:

template<typename T, template <typename...> typename C = std::deque>
class stack {
    using Container = C<T>;  // replace with alias
    template <typename X>
    using Underlying_Container = C<X>; // an alias for C
};