Mus*_*ful 0 c++ templates template-meta-programming c++14
考虑到一个名为模板参数B的类型是C<D>(在实例化),我怎么能构建C<A>从B?
这是我的代码中的最小化提取:
template<typename A>
class foo {
template<typename B> // B is guaranteed to always be of the form C<D>
// How to write a function here with return type C<A>?
}
Run Code Online (Sandbox Code Playgroud)
template<typename, typename>
struct meta {};
template<typename A, template<typename> typename C, typename B>
struct meta<A, C<B>> {
using type = C<A>;
};
Run Code Online (Sandbox Code Playgroud)
meta<A, C<B>>::type 将会 C<A>
如果你想在基本情况下处理默认参数
template<typename...>
struct meta {};
template<typename A, template<typename...> typename C, typename B, typename ... Ts>
struct meta<A, C<B, Ts...>> {
using type = C<A, Ts...>;
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
336 次 |
| 最近记录: |