考虑以下代码 -
#include <variant>
#include <string>
int p(std::variant<bool, std::string> v) {
return v.index();
}
int main() {
return p("ad");
}
与其选择std::string
,p将实例化为包含bool
的变体(我想要std::string
),这可以通过明确指定std::string
来修复,但是这太麻烦了,我尝试提供不同的重载但似乎无效。