![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
模板
文章平均质量分 51
wuguinianjing
这个作者很懒,什么都没留下…
展开
-
格式字符串format
C11仿写printf(const char * format,…) namespace sqh { void print(const char* format) { const char* s = format; while (*s) { if (*s == '%' && *(++s) != '%') { std::runtime_error("this format is error"); } std::cout << *s++; } }原创 2021-12-02 23:35:27 · 638 阅读 · 0 评论 -
C++11可变参数模板
简介 C++11增强了模板功能,在C++11之前,类模板和函数模板只能含有固定数量的模板参数,现在C++11中的新特性可变参数模板允许模板定义中包含0到任意个模板参数。 可变参数模板和普通模板的语义是一样的,只是写法上稍有区别,声明可变参数模板时需要在typename或class后面带上省略号“…”。 参数表 省略号的作用有两个: 声明一个参数包,这个参数包可以包含0到任意个模板参数。 在模板定义的右边,可以将参数包展开成一个个独立的参数。 解析参数包 如果需要用参数包中的参数,则一定要将参数包展原创 2021-10-15 17:07:42 · 126 阅读 · 0 评论 -
C++11 enable_if
enable_if 的主要作用就是当某个 condition 成立时,enable_if可以提供某种类型. 其作为选择类型的小工具,其广泛的应用在 C++ 的模板元编程(meta programming)中。它的定义也异常的简单: template <bool, typename T=void> struct enable_if { }; template <typename T> struct enable_if<true, T> { using type .原创 2021-10-14 00:41:12 · 310 阅读 · 0 评论 -
模板学习归总
SFINAE SFINAE(Substitution Failure Is Not An Error) 是C++ 的一种语言属性,具体内容就是”从一组重载函数中删除模板实例化无效的函数”。 SFINAE 应用最为广泛的场景是C++中的 std::enable_if,这里有完整的英文描述: In the process of template argument deduction, a C++ compiler attempts to instantiate signatures of a numbe原创 2021-10-14 00:39:09 · 123 阅读 · 0 评论 -
C++中boolalpha的用法
1.头文件 #include 2.使用说明 让输出流将bool解析成为true或者 false。 3、示例代码 void test_boolalpha() { std::cout << "true is " << true << std::endl; std::cout << "false is " << false << std::endl; // 运行下面这个语句, 在输出流中的bool值将发生变化 std::cout转载 2021-10-14 00:35:26 · 1829 阅读 · 0 评论 -
C++11 std::is_same和std::decay
C++11的模板类型判断——std::is_same和std::decay 问题提出: 有一个模板函数,函数在处理int型和double型时需要进行特殊的处理,那么怎么在编译期知道传入的参数的数据类型是int型还是double型呢? #include <iostream> template<typename TYPE> void typeCheck(TYPE data) { //do something check data type //std::cout<&转载 2021-10-13 23:53:35 · 281 阅读 · 0 评论