请考虑以下代码段:
struct v : std::variant<int, std::vector<v>> { };
int main()
{
std::visit([](auto){ }, v{0});
}
Run Code Online (Sandbox Code Playgroud)
clang ++ 7用-stdlib=libc++ -std=c++2a编译代码;
g ++ 9 -std=c++2a无法编译代码,出现以下错误:
/opt/compiler-explorer/gcc-trunk-20180711/include/c++/9.0.0/variant:94:29:错误:嵌套名称说明符中使用的不完整类型'std :: variant_size'
Run Code Online (Sandbox Code Playgroud)inline constexpr size_t variant_size_v = variant_size<_Variant>::value; ^~~~~~~~~~~~~~
两种实现都符合标准吗?
如果没有,这里的实施是正确的,为什么?