当前位置: 首页 > news >正文

实战营销型网站建设山东济南最新消息

实战营销型网站建设,山东济南最新消息,黄骅做网站价格,通化市建设工程招投标网站c17引入了any 和 variant&#xff0c;可以将任意数据类型统一用any或variant类型表示&#xff0c;在开发中还是能够带来很多便利的。在c11版本中&#xff0c;可以用下面这个例子&#xff0c;仿照实现一个Any类型。 #include <iostream> #include <stdexcept> #inc…

c++17引入了any 和 variant,可以将任意数据类型统一用any或variant类型表示,在开发中还是能够带来很多便利的。在c++11版本中,可以用下面这个例子,仿照实现一个Any类型。

#include <iostream>
#include <stdexcept>
#include <memory>class UserData{
public:UserData(){}std::string operator()(){return m_name;}
private:std::string m_name="world";
};class Any
{
public:template<typename T>Any(const T& val) noexcept : content(new Holder<T>(val)) {}Any(const Any& other) noexcept : content(other.content ? other.content->Copy() : nullptr) {}Any(Any&& other) noexcept :content(std::move(other.content)) {}Any& operator=(const Any& other){if (this == &other)return *this;content.reset(other.content ? other.content->Copy() : nullptr);return *this;}template<typename T>T& get() const{if (content.get() == nullptr){throw std::exception_ptr();}if (typeid(T).hash_code() != content->TypeID()){throw std::bad_cast();}return static_cast<Holder<T>*>(content.get())->value;}std::string TypeName() const{if (content)return content->TypeName();return "";}size_t TypeID(){if (content)return content->TypeID();return 0;}
private:struct Base {virtual ~Base() {}virtual Base* Copy() const = 0;virtual size_t TypeID() const = 0;virtual const char* TypeName() const = 0;};template<typename T>struct Holder :public Base{Holder<T>() = delete;Holder<T>(const T& val) : value(val), typid(typeid(T).hash_code()), typname(typeid(T).name()) {}~Holder<T>() {}Base* Copy() const override { return new Holder<T>(value); }size_t TypeID() const override { return typid; }const char* TypeName() const override { return typname; }T value;size_t typid;const char* typname;};std::unique_ptr<Base> content;
};int main()
{int iVal = 10;Any param = iVal;int& iv = param.get<int>();iv = 100;std::cout<<param.TypeName()<<", val="<<param.get<int>()<<std::endl;std::string sVal="hello";param = sVal;std::cout<<param.TypeName()<<", val="<<param.get<std::string>()<<std::endl;double dVal = 101.21;Any paramd = dVal;param = paramd;std::cout<<param.TypeName()<<", val="<<param.get<double>()<<std::endl;UserData data;param = data;UserData& dt = param.get<UserData>();std::cout<<param.TypeName()<<", val="<<dt()<<std::endl;return 0;
}

http://www.wangmingla.cn/news/42433.html

相关文章:

  • 在线咨询 1 网站宣传新闻头条最新消息10条
  • 风景名胜区建设部网站沈阳线上教学
  • 做毕设好的网站百度正版下载
  • 合肥网络推广软件seo搜索引擎优化介绍
  • 中国有几大网站2023新闻大事件摘抄
  • 大学网站建设专业武汉百度快速排名提升
  • 网站域名注册哪个好百度竞价排名榜
  • 十度网站建设网页查询
  • 保健品商城网站模板门户网站怎么做
  • 小公司做网站需要注意什么百度指数官网首页
  • 都江堰旅游门户网站苏州关键词排名系统
  • 网站建设的内容管理百度竞价排名的利与弊
  • 做动态二维码的网站广州网站建设方案优化
  • 电影天堂网站用什么程序做的谷歌推广开户多少费用
  • 网站建设所用的工具疫情防控最新通告
  • 网站建设设计原则seo推广技术培训
  • 建设工程司法解释想做seo哪里有培训的
  • 品牌的佛山网站建设价格什么网站百度收录快
  • 微盟登录平台苏州网络推广seo服务
  • 动态网站开发与设计十大软件免费下载网站排行榜
  • 双城网站建设公司市场监督管理局官网入口
  • 厦门建设银行招聘网站百度首页优化排名
  • vs做网站开发吗友情视频
  • 英语工作室网站怎么做所有代刷平台推广
  • 如何让网站打不开 解析外链购买交易平台
  • 江苏网站建设怎么样群发软件
  • 网上购物网站网站建设分析seo流量的提升的软件
  • 网站栏目下拉菜单软文代写平台有哪些
  • 自己做的网站服务器在哪里seo顾问阿亮博客
  • 网站开发背景意义佛山优化推广