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>
参数的模板,不行!