2

C++ 引入了类模板参数推导所以而不是

std::array<int, 33> arr{1,2,3,...};
std::vector<float> vec{0.0, 0.1, 0.01, ...};
std::pair<int, float> pair {1, 1.1};

我们可以写出更干净的代码

std::array arr{1,2,3,...};
std::vector vec{0.0, 0.1, 0.01, ...};
std::pair pair {1, 1.1};

但是,当我们使用相同的模板参数创建类型别名时,由于某种原因,推断失败

#include <array>
template<class T, size_t N>
array_alias = std::array<T, N>;

int main() {
  array_alias array {1,2,3}; // expected array_alias<int, 3>
  return 0
}

我预计它会使用相同的推导方法,但由于某种原因,每个编译器都会抛出一个错误。别名模板和类模板有什么区别,有没有办法让它工作?

4

0 回答 0