Aşağıdaki std :: visit kullanımı, gcc 7.2 altında düzgün bir şekilde derleniyor ancak clang 5.0 altında derlenemiyor. Problemin ne olduğunu bilen kimse var mı? Bu hata İşte std :: varyantı ziyaret etmek, clang altında derlemek için başarısız oluyor 5
include/c++/7.2.0/variant:238:46: error: cannot cast 'std::variant<S1, S2>' to its private base class
'std::__detail::__variant::_Variant_storage<true, S1, S2>'
return __get(std::in_place_index<_Np>, std::forward<_Variant>(__v)._M_u);
Godbolt bağlantısıdır gösterir: Bu
bug 33222 bilinir
https://godbolt.org/g/5iaKUm
LibstdC++ 'nin varyantının, Clang'ın desteklemediği standart dışı bir özellik kullanması mümkün olabilir. -stdlib = libC++ 'ile derler. – chris
Notice 'std :: get <0> (v)', 'std :: get (v)', vb, temelde aynı hatayla (ve aralarında daha az örnekleme adımı) başarısız olur. –
aschepler
Dupe-ness'i nasıl değerlendirdiğine bağlı olarak bir dupe olabilir: https://stackoverflow.com/q/46506387/2069064 – Barry