代码如下:
以下代码:
variant<string> x = "abc";
cout << get<string>(x) << "\n";
在 g++(版本 7.2)下工作正常。然而,使用 libstdc++ 在 clang++(版本 5.0)下编译时,在 get
方法中出现以下错误:
在 clang++(版本 5.0)下使用 libstdc++ 编译时,在 get
方法中出现错误。
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.2.0/../../../../include/c++/7.2.0/variant:238:46: fatal error: cannot cast 'std::variant<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >' to its private base class 'std::__detail::__variant::_Variant_storage<false, std::
__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >'
return __get(std::in_place_index<_Np>, std::forward<_Variant>(__v)._M_u);
这是编译器的错误还是我的代码有问题?
libc++
作为标准库实现?如果我没记错,clang 默认使用的是 libstdc++。 - StoryTeller - Unslander Monica