【发布时间】:2021-07-17 08:41:12
【问题描述】:
GCC 接受带有 auto 作为 lambda 参数类型一部分的 C++ 代码,例如:
#include <vector>
#include <iostream>
int main()
{
auto make_vector = []( std::initializer_list<auto> v )
{ return std::vector<typename decltype(v)::value_type>{v}; };
auto v = make_vector( {1,2} );
std::cout << v[0] << ' ' << v[1] << '\n';
}
https://gcc.godbolt.org/z/z43bEjMc9
这里的参数类型是std::initializer_list<auto>,有时候真的很方便。但其他编译器抱怨:
模板参数不能是包含'auto'的类型
它是语言的仅 GCC 扩展,还是将出现在其他编译器中的新 C++ 功能?如果是第一种情况,那么如何关闭它以最大化语言一致性?
【问题讨论】: