Linked Question如何避免匹配Boost Variant返回類型?
假設我們有:
boost::variant<nil, std::string, string_struct>
而且,
struct string_struct
{
string_struct(std::string const& name = "") : name(name) {}
std::string name;
}
有沒有一些方法來阻止編譯器錯誤地推斷錯誤的升壓變量類型?
更從理論上說,如果我們有一個
boost::variant<std::string, std::string>
我不認爲這將彙編。然而,第一個例子會。問題是,我們如何保證不返回類型的衝突?具體來說,當作爲解析器的一部分使用時,有無數的實例需要第一個示例。所以...
爲什麼不只是'var = string_struct(string_param);'如果你知道你想初始化一個'string_struct'而不是'string' – SirGuy
此外,你可以使構造函數爲'explicit',並去除隱式轉換從'const std :: string&'。 – melak47
哦,是的,我猜我的評論沒有解決嘗試初始化字符串變體的問題......使構造函數明確將解決這個問題,使我的第一個評論成爲必要性而不僅僅是一個建議。 – SirGuy