
c++11
linuxheik
这个作者很懒,什么都没留下…
展开
-
c++17 using继承所有构造函数
c++17 using继承所有构造函数原创 2022-03-03 16:09:56 · 1064 阅读 · 0 评论 -
图说函数模板右值引用参数(T&&)类型推导规则(C++11)
图说函数模板右值引用参数(T&&)类型推导规则(C++11)见下图:规律总结:只要我们传递一个基本类型是A④的左值,那么,传递后,T的类型就是A&,形参在函数体中的类型就是A&。只要我们传递一个基本类型是A的右值,那么,传递后,T的类型就是A,形参在函数体中的类型就是A&&。另外,模板参数类型推导是保留cv限定符(cv-qualifier,const和volat转载 2017-06-16 11:29:23 · 3976 阅读 · 0 评论 -
pthread_cond_broadcast()
pthread_cond_timedwait()函数阻塞住调用该函数的线程,等待由cond指定的条件被触发(pthread_cond_broadcast() or pthread_cond_signal())。当pthread_cond_timedwait()被调用时,调用线程必须已经锁住了mutex。函数pthread_cond_timedwait()会对mutex进行【解锁和执行对条件转载 2017-06-16 11:59:08 · 4890 阅读 · 0 评论 -
用std::thread替换实现boost::thread_group
用std::thread替换实现boost::thread_groupthread_group是boost库中的线程池类,内部使用的是boost::thread。随着C++ 11标准的制定和各大编译器的新版本的推出(其实主要是VS2012的推出啦……),本着能用标准库就用标准库的指导原则,决定把项目中多线程相关的部分代码从boost::thread迁移到std::thread。thre转载 2017-08-01 20:51:49 · 3386 阅读 · 0 评论 -
c++11标准:匿名函数(匿名表达式)lambda
c++11标准:匿名函数(匿名表达式)lambdalambda: C++11提供了对匿名函数的支持,称为Lambda函数(也叫Lambda表达式). Lambda表达式具体形式如下: 匿名函数定义/匿名表达式声明:[capture](parameters)->return-type{body} 函数调用:function a = [capture](p转载 2017-12-27 15:31:02 · 829 阅读 · 0 评论 -
C++11尝鲜:std::move和std::forward源码分析
std::move和std::forward是C++0x中新增的标准库函数,分别用于实现移动语义和完美转发。下面让我们分析一下这两个函数在gcc4.6中的具体实现。预备知识引用折叠规则:X& + & => X&X&& + & => X&X& + && => X&X&& + && => X&&函数模板参数推导规则(右值引用参数部分):当函数模板的模板参数为转载 2017-12-28 10:21:19 · 278 阅读 · 0 评论 -
std:forward 完美转发
概述: // TEMPLATE CLASS identitytemplate struct identity { // map _Ty to type unchanged typedef _Ty type; const _Ty& operator()(const _Ty& _Left) const {转载 2017-12-28 10:22:13 · 624 阅读 · 0 评论 -
左值和右值
左值引用,也就是“常规引用”,不能绑定到要转换的表达式,字面常量,或返回右值的表达式。而右值引用恰好相反,可以绑定到这类表达式,但不能绑定到一个左值上。右值引用就是必须绑定到右值的引用,通过&&获得。右值引用只能绑定到一个将要销毁的对象上,因此可以自由地移动其资源。返回左值的表达式包括返回左值引用的函数及赋值,下标,解引用和前置递增/递减运算符,返回右值的包括返回非引用类型的函数及转载 2017-12-29 10:50:27 · 13841 阅读 · 0 评论 -
【C++11学习笔记】返回类型后置语法
【C++11学习笔记】返回类型后置语法原创 2016年06月22日 01:48:22标签:C++11 /auto /decltype1945本次学习3个知识点: (1)auto推导类型 (2)decltype推导表达式的类型 (3)返回类型后置语法泛型编程中经常遇到的写一个加法函数:template typen转载 2017-12-29 14:42:18 · 280 阅读 · 0 评论 -
模板类,模板函数
模板类和模板函数,模板类中的函数,都是在调用调用时才会实例化里面的函数,或者类型,比如模板类A里面有三个模板函数template funa()template funb()template func()A.funa();这样调用时,才会实例化funa也就是这个类只有一个函数,其它没函数没有实现原创 2017-12-29 14:47:31 · 230 阅读 · 0 评论 -
c++11 std::declval 详解
c++11 std::declval 详解函数模板std::declval (c++11 only)template typename add_rvalue_reference::type declval() noexcept;功能描述: 返回一个类型的右值引用,不管是否有没有默认构造函数或该类型不可以创建对象。(可以用于抽象基类);参数:无转载 2017-12-29 14:56:59 · 1691 阅读 · 0 评论 -
C++11系列-改进的类型推导:auto、decltype和新的函数语法
原文地址:http://towriting.com/blog/2013/08/08/improved-type-inference-in-cpp11/C++11引入了一些新的实用的类型推导能力,这意味着你可以花费更少的时间去写那些编译器已经知道的东西。当然有些时候你需要帮助编译器或者你的编程伙伴。但是C++11,你可以在一些乏味的东西上花更少的时间,而多去关注逻辑本身。转载 2017-12-29 14:59:45 · 177 阅读 · 0 评论 -
decltype ,逗号表达式
templateclass C, class F>auto test(C c, F f) -> decltype((void)(c.*f)(), void()) { }逗号表达返回最右边的类型You are looking at , which is an operator in C++ (comma operator). See row 16Its declarat原创 2017-12-29 16:15:55 · 893 阅读 · 1 评论 -
typedef函数指针与函数类型的定义及使用方式
typedef函数指针与函数类型的定义及使用方式原创 2015年08月10日 21:17:3119461、先给出一道面试题:#include"stdafx.h"#include"stdio.h"//实现数值的自增1int inc(int a){ return(++a);转载 2017-12-29 17:17:33 · 1014 阅读 · 0 评论 -
C 中typedef 函数指针的使用
C 中typedef 函数指针的使用类型定义的语法可以归结为一句话:只要在变量定义前面加上typedef,就成了类型定义。这儿的原本应该是变量的东西,就成为了类型。char(&yes)[1]; 定义一个引用 一元字符数组 的变量,(和char& yes类似,但此不是数组)char(&no)[2]; 定义一个2个元素的字符型数组变量, char& no类似转载 2017-12-29 17:45:16 · 583 阅读 · 0 评论 -
is_base_of
让我们通过看看步骤来了解它的工作原理。从sizeof开始(check(Host (),int()))part。有两个候选重载可用,template yes check(D *,T);和无校验(B *,int)。如果选择第一个,你得到sizeof(是),否则sizeof(no)接下来,让我们来看看重载分辨率。第一个重载是模板实例化检查(D *,T = int),第二个候选是check(B原创 2016-11-24 11:58:38 · 688 阅读 · 0 评论 -
localtime
#include <stdio.h>#include <string.h>#include <sys/time.h>#define BEIJINGTIME 8#define DAY (60*60*24)#define YEARFIRST 2001#define YEARSTART (365*(YEARFIRST-1970) + 8...转载 2018-08-31 16:35:34 · 2779 阅读 · 0 评论 -
关于C++11 模板中的 using
关于C++11 模板中的 usingusingC++ 11 后的类型别名或者模板别名类型别名是指:之前定义的类型的引用(类似 typedef)模板别名是指:模板类的引用语法:(1)using identifier attr(optional) = type-id;(2)template<template-parameter-list> using ...转载 2019-02-26 10:59:37 · 1209 阅读 · 0 评论 -
C++11:深入理解右值引用,move语义和完美转发
C++11:深入理解右值引用,move语义和完美转发标签: c++11右值引用完美转发move语义rvalue reference 2015-04-15 12:45 12667人阅读 评论(6)收藏举报分类: C++王者归来(16) 版权声明:本文为博主原创文章,未经博主允许不得转载。深入右值引用,mo转载 2017-05-31 11:17:21 · 515 阅读 · 0 评论 -
c++11——move/forward
std::move c++11中提供了std::move()来将左值转换为右值,从而方便的使用移动语义。move是将对象的状态或者所有权从一个对象转移到另一个对象,只是转移,没有内存拷贝。 c++中所有容器都实现了move语义,方便我们实现性能优化。move只是转移了资源的控制权,本质上是将左值强制转换为右值引用,以用于move语义,避免含有资源的对象发生无谓的拷贝。move转载 2017-05-31 11:15:48 · 471 阅读 · 0 评论 -
C++11中的右值引用及move语义编程
C++11中的右值引用及move语义编程 C++0x中加入了右值引用,和move函数。右值引用出现之前我们只能用const引用来关联临时对象(右值)(造孽的VS可以用非const引用关联临时对象,请忽略VS),所以我们不能修临时对象的内容,右值引用的出现就让我们可以取得临时对象的控制权,终于可以修改临时对象了!而且书上说配合move函数,可以大大提高现有C++的效率。那么是怎转载 2017-03-09 15:15:33 · 221 阅读 · 0 评论 -
C++11新特性之 std::forward(完美转发)
上篇博客对右值、右值引用都做了简要介绍。我们也要时刻清醒,有时候右值会转为左值,左值会转为右值。 (也许“转换”二字用的不是很准确)如果我们要避免这种转换呢? 我们需要一种方法能按照参数原来的类型转发到另一个函数中,这才完美,我们称之为完美转发。std::forward就可以保存参数的左值或右值特性。因为是这样描述的: When used accordi转载 2017-04-07 09:43:24 · 748 阅读 · 0 评论 -
C++11新特性应用--让你的程序更高效(右值引用避免深拷贝)
这里的内容注意参考书籍《深入应用C++11代码优化与工程级应用》今天,重温一下右值。使用右值,使得我们的C++程序更加高效。我们可以简单把右值理解为一个临时变量。之前,我们谁也不会在意这个临时变量,但要付出了效率的代价。而右值引用就是对右值进行的引用类型,与我们通常所说的引用一样,一定要记得初始化。左右值区分:void func(X& x); // 左值转载 2017-04-07 09:44:57 · 688 阅读 · 0 评论 -
C++11新特性应用--占位符(std::placeholders std::is_placeholder std::is_bind_expression)
上一篇博客讲了std::function和std::bind的使用,其中提到了占位符,std::placeholders定义如下:namespace placeholders { extern /* unspecified */ _1; extern /* unspecified */ _2; extern /* unspecified */ _3; // ...}1转载 2017-04-07 09:46:34 · 1997 阅读 · 0 评论 -
c++11之左值引用和右值引用
c++11中增加了右值引用和move语义来避免一些不必要的构造和copy操作,以此来提升程序的运行效率。首先说左值和右值,他们绝不是简单的等号左边和右边的区别,总结来说: 1 .左值可以寻址,而右值不可以。 2 .左值可以被赋值,右值不可以被赋值,可以用来给左值赋值。 3 左值可变,右值可变(仅对基础类型适用,用户自定义类型右值引用可以通过成员函数改变)。转载 2017-04-07 09:57:03 · 272 阅读 · 0 评论 -
如何理解c++中的引用折叠?
感觉上叫引用坍塌好理解点(reference-collapsing rules)就这样A& & 变成 A&A& && 变成 A&A&& & 变成 A&A&& && 变成 A&&就是左值引用会传染,只有纯右值&& && = &&,沾上一个左值引用就变左值引用了作者:知乎用户链接:https://www.zhihu.com/questio转载 2017-04-07 14:26:58 · 3792 阅读 · 0 评论 -
深入解读C++中的右值引用
右值引用(及其支持的Move语意和完美转发)是C++0x将要加入的最重大语言特性之一,这点从该特性的提案在C++ - State of the Evolution列表上高居榜首也可以看得出来。从实践角度讲,它能够完美解决C++中长久以来为人所诟病的临时对象效率问题。从语言本身讲,它健全了C++中的引用类型在左值右值方面的缺陷。从库设计者的角度讲,它给库设计者又带来了一把利器。从库使用者的角度讲转载 2017-04-07 14:44:15 · 2619 阅读 · 0 评论 -
forward在委托机制中的应用——完美转发
forward在委托机制中的应用——完美转发标签: forward完美转发委托机制2017-02-07 21:19 63人阅读 评论(0) 收藏 举报 分类:C++(25) 版权声明:本文为博主原创文章,未经博主允许不得转载。目录(?)[+]一.前言在之前,我曾花三篇文章讲述了C++委托机制的封转载 2017-04-07 14:44:56 · 492 阅读 · 0 评论 -
c++11 pod类型(了解)
c++11 pod类型(了解)啥是POD类型?POD全称Plain Old Data。通俗的讲,一个类或结构体通过二进制拷贝后还能保持其数据不变,那么它就是一个POD类型。平凡的定义1.有平凡的构造函数2.有平凡的拷贝构造函数3.有平凡的移动构造函数4.有平凡的拷贝赋值运算符5.有平凡的移动赋值运算符6.有平凡的析构函数7.不能包含虚函数8.不能包转载 2017-04-07 17:07:09 · 597 阅读 · 0 评论 -
C++ -- variadic template (可变参数模板)
C++ -- variadic template (可变参数模板)作者:唐风主页:http://www.cnblogs.com/muxueC++11 语言核心的改进中,最为关注的有 rvalue reference (这里有一篇拙作),lambda,variadic template。rvalue 规则稍微复杂,但一旦理解和记住了,应用上就没有什么困难。lambda 其转载 2017-04-07 17:16:46 · 598 阅读 · 0 评论 -
C++0x 内存模型和原子操作 (std:::atomic memory order等相关资料)
并行编程的趋势不可阻挡啊,新的c++标准也加入了很多支持。内存模型和 std::atomic 的引入很值得学习吧,看facebook的开源c++库都用了很多c++ 11的特性了。 std::atomic 这些。网上看到的最详细清楚的解释是,C++ Concurrency in Action.pdf 一书的第五章5 The C++ Memory Model an转载 2017-04-07 17:18:10 · 1316 阅读 · 0 评论 -
C++中的左值与右值(二
C++中的左值与右值(二) 以前以为自己把左值和右值已经弄清楚了,果然发现自己还是太年轻了,下面的这些东西是自己通过在网上拾人牙慧,加上自己的理解写的。1. 2. 怎么区分左值和右值:知乎大神@顾露的回答。3. 我们不能直接定义一个引用的引用。但是,通过类型别名或通过模板类型参数间接定义是可以的。 引用折叠只能应用于间接创建引用的引用,如类型别名或模板参数转载 2017-04-06 14:03:58 · 293 阅读 · 0 评论 -
从4行代码看右值引用
首页最新文章IT 职场前端后端移动端数据库运维其他技术- 导航条 -首页最新文章IT 职场前端- JavaScript- HTML5- CSS后端- Python- Java- C/C++- PHP- .NET- Ruby- Go移动端- Android- iOS数据库运维- Linux- UNIX其他技术-转载 2017-04-06 14:04:52 · 816 阅读 · 0 评论 -
左值、右值、左值引用、右值引用
左值、右值、左值引用、右值引用2015-06-01 15:07 404人阅读 评论(0) 收藏 举报 分类:c++11(5) 版权声明:本文为博主原创文章,未经博主允许不得转载。一、c++中的左值和右值误区:左值位于等号左边,右值位于等号右边。C++11中的定义:左值表达式表示的是一个对象的身份(在内存中的位置),而右值表达式转载 2017-04-06 14:14:51 · 700 阅读 · 0 评论 -
C++中临时对象及返回值优化
转:C++中临时对象及返回值优化了解临时对象的来源什么是临时对象? C++真正的临时对象是不可见的匿名对象,不会出现在你的源码中,但是程序在运行时确实生成了这样的对象.通常出现在以下两种情况:(1)为了使函数调用成功而进行隐式类型转换的时候。 传递某对象给一个函数,而其类型与函数的形参类型不同时,如果可以通过隐式转转载 2017-04-06 14:21:47 · 352 阅读 · 0 评论 -
VC10中的C++0x特性 Part 2 (3):右值引用
VC10中的C++0x特性 Part 2 (3):右值引用 来源:vcblog 作者:Stephan T. Lavavej 翻译:飘飘白云 (转载时请注明作者和出处。未经许可,请勿用于商业用途) 简介这一系列文章介绍Microsoft Visual Studio 2010 中支持的C++ 0x特性,目前有三部分。 Part 1 :介绍了Lambda转载 2017-03-09 15:13:18 · 379 阅读 · 0 评论