如果我有一张Map
const std::map<int, std::variant<int, std::string>> m ={{1,1},{2,"asd"}};
但是如果我错误地调用了std::get<string>(m[1])
而不是std::get<int>(m[1])
,它将引发bad_variant_access.但这只是代码的拼写错误,所以IDE是否可以检测到它,或者某种形式的static_assert
是否可以工作,因为m
是一个常量(或者如果m
不是常量怎么办),或者只引发编译错误?
1条答案
按热度按时间g6ll5ycj1#
如果它总是常量,就不需要Map,可以在编译时调度它:
或者,只使用元组: