我在尝试使用stringstream对象时注意到了一些事情.这是一个无用的例子来解释这个:
stringstream ss ;
ss << "my string" ;
cout << ss.str() << endl ;
Run Code Online (Sandbox Code Playgroud)
不等于
cout << (stringstream() << "my string").str() << endl ;
Run Code Online (Sandbox Code Playgroud)
这会导致编译错误,抱怨'class std :: basic_ostream'没有名为'str'的成员.
我不能轻易解释这一点.这对我的应用程序并不重要,但我很确定这隐藏了一个有趣的c ++技巧.
注意:我正在使用gcc和c ++ 14
当并发处理问题我经常使用std::unique_lock<std::mutex>,并std::lock_guard<std::mutex>与两者没有任何问题.
我也扩展std::mutex到能够使用它如下:
mutex.protect([](){
// my protected code here
}) ;
Run Code Online (Sandbox Code Playgroud)
它锁定互斥锁并在lambda调用周围释放它.
在boost或标准库中是否已经实现了类似的行为?
我在项目中添加了对gperftools的支持,以分析cpu和内存。Gperftools需要为每个二进制文件最后链接库tcmalloc 。
cmake是否可以通过一种方法将库附加到项目的每个二进制目标中,而无需编辑每个目标CMakeLists.txt?
我在这里发现了一个类似的问题:将链接库链接到cmake项目中的所有目标,但未得到回答。建议使用宏来克服该问题,但是没有说明如何实现。