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