আমি একটি বৈকল্পিকের বিষয়বস্তু অ্যাক্সেস করার চেষ্টা করছি। আমি সেখানে কী জানি না, তবে ধন্যবাদ, বৈকল্পিকটি কী করে। সুতরাং আমি ভেবেছিলাম আমি কেবল বৈকল্পিকটি জিজ্ঞাসা করব এটিতে কোন সূচক রয়েছে এবং তারপরে সেই সূচিটি std::get
তার সামগ্রীতে ব্যবহার করব।
তবে এটি সংকলন করে না:
#include <variant>
int main()
{
std::variant<int, float, char> var { 42.0F };
const std::size_t idx = var.index();
auto res = std::get<idx>(var);
return 0;
}
ত্রুটি std::get
কলটিতে ঘটে :
error: no matching function for call to ‘get<idx>(std::variant<int, float, char>&)’
auto res = std::get<idx>(var);
^
In file included from /usr/include/c++/8/variant:37,
from main.cpp:1:
/usr/include/c++/8/utility:216:5: note: candidate: ‘template<long unsigned int _Int, class _Tp1, class _Tp2> constexpr typename std::tuple_element<_Int, std::pair<_Tp1, _Tp2> >::type& std::get(std::pair<_Tp1, _Tp2>&)’
get(std::pair<_Tp1, _Tp2>& __in) noexcept
^~~
/usr/include/c++/8/utility:216:5: note: template argument deduction/substitution failed:
main.cpp:9:31: error: the value of ‘idx’ is not usable in a constant expression
auto res = std::get<idx>(var);
^
main.cpp:7:15: note: ‘std::size_t idx’ is not const
std::size_t idx = var.index();
^~~
আমি এটা কিভাবে ঠিক করবো?