类模板的别名

时间:2015-09-22 18:13:05

标签: c++ templates c++11 typedef

在下面的代码中考虑类似A的别名模板。现在让B成为A的别名模板。

在下面的代码中,这些类模板用作结构C的模板参数,该结构仅专用于一个类型名称(A)。 clang -std=c++11存在error: implicit instantiation of undefined template 'C<B>',表示需要B的另一项专门化。

template<int N>
using A = int;

template<int N>
using B = A<N>;

template<template<int> class I>
struct C;

template<>
struct C<A> {};

int main() {
  C<A> c;
  C<B> d; // clang error: implicit instantiation
}

为什么(如果是偶数) - 尽管不允许使用别名专门化 - AB被视为不同的类模板?是否有一种解决方法允许我重命名一个冗长的模板而不会引起这个问题?

0 个答案:

没有答案