我有一个类,我已经写了哪种类型的擦除。公共接口是:为什么这个模糊不清?
template <typename T>
value(const T &t);
value(value &&v);
template <typename T>
operator T() const;
当我从一个的std :: string我有没有问题创造价值的实例,一切正常。当我尝试获得的std :: string退了出来,用static_cast<std::string>(val)
,其中val
是正在举行的std :: string值的实例中,我从VS2012以下错误:
错误C2440:'的static_cast:值“不能从转换'到std :: string的”
没有构造函数可采取源类型,或者如果我注释掉的模板转换运算符,并添加
operator std::string() const
构造函数重载解析模棱两可
然后编译。我认为,std :: string构造函数和模板化的演员操作符之间具有相同的匹配优点。任何人都可以提出发生了什么事以及如何解决它?
错误消息是否显示候选人? –
请提供一个编译示例(尽可能多达相关错误)。 –
这是我写的一个小例子:http://codepad.org/XJ2Jv5fT – Dave