value& value::operator=(int64_t val) { if(!tag_) set(tag_long(val)); else switch(tag_->get_type()) { case tag_type::Long: static_cast<tag_long&>(*tag_).set(val); break; case tag_type::Float: static_cast<tag_float&>(*tag_).set(val); break; case tag_type::Double: static_cast<tag_double&>(*tag_).set(val); break; default: throw std::bad_cast(); } return *this; }
value_initializer::value_initializer(int64_t val) : value(tag_long(val)) {}
tag_value& tag_value::operator=(std::int64_t x) { *this = tag_long(x); return *this; }