这是我的结构,它在创建变量时使用隐式转换。
#include <string>
#include <variant>
using namespace std;
using val = variant<int, string, double, bool, long, long long, long double>;
struct value
{
val innerVal;
value():innerVal(""){}
value(const val &c) : innerVal(c) {}
template <typename T>
operator T()
{
return get<T>(innerVal);
}
template <typename V>
value &operator=(const V &t)
{
innerVal = t;
return *this;
}
};
Run Code Online (Sandbox Code Playgroud)
这就是我在构造变量时使用它的方式,它工作正常,但是当我分配一个已经创建的变量来value构造它时,它会给出错误。
int main(int argc, char* argv[])
{
value h;
h = "String";
string m = h;// Here works fine
string b = …Run Code Online (Sandbox Code Playgroud)