草庐IT

core-thread-operations

全部标签

c++ - boost spirit : Difference between operators "%=" and "="

我不明白这两个运算符之间的区别。让我们举一个例子,将像"AA,BB,CC,DD"这样的输入解析成字符串vector。namespaceqi=boost::spirit::qi;classmy_grammar:publicqi::grammar{public:my_grammar():base_type(start){usingqi::_1;usingqi::char_;start=*(char_-qi::lit(','));}qi::rulestart;};据我所知,a%=b等同于a=b[_val=_1]。这很清楚。但另一方面,解析器*(char_-qi::lit(','))具有std

c++ - 为什么继承的 protected operator=() 具有公共(public)访问权限

声明为protected的重载运算符=对于继承父类作为public的子类是公开可访问的。#includeclassA{public:A(charc):i(c){}chari;protected:A&operator=(constA&rdm){std::cout编译时没有错误:$g++-Wall-otest_operator~/test_operator.cpp$./test_operatora.i==aaccessingoperator=()a.i==x直接使用A是编译不过的。operator=()以外的任何其他运算符重载都不会编译。使用g++4.4.7和7.3.0以及c++98和c+

c++ - block 范围内的 thread_local

thread_local变量在block范围内有什么用?如果一个可编译的样本有助于说明问题,这里是:#include#includenamespaceMy{voidf(int*constp){++*p;}}intmain(){thread_localintn{42};std::threadt(My::f,&n);t.join();std::cout输出:43在示例中,新线程获得了它自己的n但(据我所知)不能用它做任何有趣的事情,所以何必呢?新线程自己的n有没有用?如果它没有用,那又有什么意义呢?自然地,我假设是一个点。我只是不知道这有什么意义。这就是我问的原因。如果新线程自己的n想要(

日志报错 git -c dif.mnemonicprefix=false -c core.guotepath=false 解决方法

        前言:            在进行下面操作前,必须确保,你是否安装了Git。           查看Git                在命令行窗口中输入`git--version`:                如果这个命令成功显示了Git的版本信息,这表明Git已经被安装。            1.使用Sourcetree        SourceTree是Windows和MacOSX下免费的Git和Hg客户端,拥有可视化界面,容易上手操作。同时它也是Mercurial和Subversion版本控制系统工具。支持创建、提交、clone、push、pull和mer

c++ - "Socket operation on non-socket"错误由于奇怪的语法

我在调用connect时在我的一些网络代码中遇到错误Socketoperationonnon-socket并花了很多时间试图找出导致的原因它。我终于发现是以下代码行导致了问题:if((sockfd=socket(ai->ai_family,ai->ai_socktype,ai->ai_protocol)看到问题了吗?该行应该如下所示:if((sockfd=socket(ai->ai_family,ai->ai_socktype,ai->ai_protocol))我不明白的是为什么第一行不正确的行没有产生警告。换句话说,一般形式不应该:if(foo=bar()编译器看起来很奇怪,尤其是使

c++ - 在 switch 语句中使用类类型 : is it better than using typeid operator?

我在下面看到了有关C++标准$6.4.2中switch语句的内容。Switch语句可以带一个条件。Theconditionshallbeofintegraltype,enumerationtype,orofaclasstypeforwhichasingleconversionfunctiontointegralorenumerationtypeexists(12.3).Iftheconditionisofclasstype,theconditionisconvertedbycallingthatconversionfunction,andtheresultoftheconversion

c++ - "thread-local storage not supported for this target",适合#ifdef?

由于每个编译器都有自己的线程本地存储版本,我最终为它创建了一个宏。现在唯一的问题是GCC(关闭了pthreads),这给了我:“此目标不支持线程本地存储”很公平,因为在这种情况下pthreads实际上是关闭的。问题是,是否有一种通用的方法可以使用一些宏来检测这一点,例如#ifdef__GCC_XXX_NO_THREADS_XXX?编辑:请参阅下面接受的答案。另外,这是我的懒惰解决方案:$touchtest.c$gcc-E-dMtest.c>out.1$gcc-pthread-E-dMtest.c>out.2$diffout.*28a29>#define_REENTRANT1这是在Mac

c++ - 这个 operator() 语法有什么作用?

这段代码取自http://drdobbs.com/cpp/184403774:templateclassMinResult{L&lhs_;R&rhs_;public:operatorL&(){returnlhs_上面的代码试图在箭头指向的线上做什么?我是C++的初学者,我知道我们可以通过定义operator()来覆盖/定义它。但是不应该这样定义吗L&operator(){returnlhs_我确信这是一些不同的语法,因为operator()应该是一个词。此外,您不能用不同的返回类型定义其中两个。 最佳答案 不,这是类型转换运算符。你

c++ - OpenCV 2.1:ostream operator<< cv::Mat 在哪里?

正在关注thisquestion,我试图将cv::Mat的内容打印到标准输出:#include#include#include#include#includeintmain(){cv::Matm=cv::Mat::ones(10,10,CV_32S);std::cout这会导致错误error:nomatchfor‘operator我在Ubuntu11.10上使用gcc4.6.1,并安装了opencv,不包括示例,遵循theseinstructions.我的问题是,运算符在2.1中可用吗?如果可用,我如何获得它? 最佳答案 更新到Op

c++ - 有什么方法可以使用 GCC 的 __thread 完全模拟 thread_local 吗?

C++11标准包含一个新的附加项——thread_local说明符——它使静态变量成为线程局部的。标准的thread_local支持非平凡的类型——那些具有构造函数和析构函数的类型。遗憾的是,GCC通过作为扩展提供的__thread说明符仅支持普通类型。有没有办法在__thread之上模拟thread_local?__thread的实现非常快(相当于常规变量加两个间接寻址),所以我想避免热路径中的库函数。我正在使用GCC和Linux。不需要便携性。 最佳答案 没有。gcc目前没有能力在线程创建/销毁时为__thread东西运行cto