Compiler Explorer 一个例子胜千言。
更准确地说明看这里。
1 | auto l = {1, 2, 3}; |
直接用 auto 接收一个 std::initializer_list<T>,可以,且能正确推导类型。
1 | std::vector<int> v1 = {1, 2, 3}; |
直接拿它初始化确定的类型,可以。
1 | auto v2 = std::vector({1, 2, 3}); |
直接用 auto 接收一个推导 std::initializer_list<T> 进而初始化的 std::vector<T>,可以,且能正确推导类型。
1 | template <typename T> |
直接匹配模板函数的类型参数,可以。
1 | template <typename T> |
直接匹配 std::vector<T> 参数的模板,不行!