小编dim*_*mba的帖子

将boost :: optional转换为bool

我怎么能阻止编译这段代码的最后一行?

#include <boost/optional.hpp>

int main()
{
    typedef boost::optional<int> int_opt;
    int_opt opt = 0;
    bool x = opt;  // <- I do not want this to compile
}
Run Code Online (Sandbox Code Playgroud)

最后一行不检查opt包含的int值,而是编译为bool的类型转换,并且似乎不是用户的意图.

安全布尔成语似乎与此相关吗?

c++ boost type-conversion boost-optional

14
推荐指数
1
解决办法
1万
查看次数

CommitMonitor的更好替代方案

在过去,我使用过SVN Monitor,对此非常满意.现在看来SVN Monitor已经付清了.

我尝试过CommitMonitor,但不像SVN Monitor那样喜欢它.
我不喜欢Commit Manager是它的GUI:

  • 我不能像在SVN Monitor中那样点击特定文件来查看它的修改.
  • 单击特定提交时,您将收到文件列表以查看其更改.但是,提交监视器不显示在它监视的不同位置的同一提交中更改的列表文件中.
  • 当您打开Commit Monitor GUI时,它会显示最早的提交,而我想查看最新的提交.
  • ..............

在这里阅读了有关替代品的内容,但是从那时起它已经过去了近3年.

有什么用于SVN监控(Windows)?

svn version-control

14
推荐指数
2
解决办法
8355
查看次数

lexical_cast int to string

它是安全的忽视例外boost::lexical_cast转换时intstd::string

c++ boost lexical-cast

13
推荐指数
2
解决办法
5585
查看次数

内核模块编译和KBUILD_NOPEDANTIC

我注意到最近的内核(从2.16.24开始?)不喜欢CFLAGS在外部模块Kbuild文件中更改.如果CFLAGS更改,Linux内核Kbuild系统将发出以下错误:

scripts/Makefile.build:46: *** CFLAGS was changed in "/some/path". Fix it to use EXTRA_CFLAGS.  Stop.
Run Code Online (Sandbox Code Playgroud)

这里:

在少数情况下,外部模块通过修改CFLAGS来修改gcc选项.这从未被记录过,并且是一种不好的做法.

另外email来自LKML.

为什么不好主意?什么是理性的?

linux makefile linux-device-driver linux-kernel

13
推荐指数
2
解决办法
1万
查看次数

如何将ascii转换为unsigned int

有没有将字符串转换为unsigned int的方法?_ultoa存在但无法找到vise版本...

c++

12
推荐指数
2
解决办法
3万
查看次数

同时使用2个版本的boost

我正在使用RHEL 5.3,它随gcc 4.1.2和1.33一起提供.我想要的一些功能,在增强1.33中缺失.因此,我们的想法是升级到1.43的新增助推出.

  1. 是否可以同时使用来自boost 1.43的其他一些仅限标题的库,其余来自1.33?例如,我想使用unorded_map,它在boost 1.33中缺失.

  2. 是否可以使用来自不同版本的并发二进制boost库?

c++ boost

12
推荐指数
2
解决办法
7692
查看次数

TCP同时打开和自连接预防

TCP标准具有"同时打开"功能.

当端口来自短暂范围时,客户端尝试连接到本地端口时,该功能的含义可能偶尔会连接到自身(请参阅此处).

所以客户认为它连接到服务器,而它实际上连接到自身.从另一方面来说,服务器无法打开其服务器端口,因为它被客户端占用/窃取.

我正在使用RHEL 5.3,我的客户不断尝试连接到本地服务器.最终客户端连接到自身.

我想防止这种情况发生.我看到了两个可能解决问题的方法:

  1. 不要将临时端口用于服务器端口.同意临时端口范围并在您的机器上进行配置(参见临时范围)
  2. 检查connect(),就像有人在这里提出的那样.

你觉得怎么样?你是如何处理这个问题的?

PS 1

除了我明显寻求的解决方案之外,我希望您能分享您对问题的真实体验.

当我找到问题的原因时,我对我的工作场所感到"惊讶",人们并不熟悉它.通过定期连接轮询服务器是恕我直言的常见做法,所以问题是如何通常不为人所知.

c++ networking tcp

12
推荐指数
2
解决办法
4343
查看次数

static_cast安全

AFAIK,对于指针/引用static_cast,如果此时编译器看不到类定义,那么static_cast行为就像reinterpret_cast.

为什么static_cast指针/引用不安全,对数值安全?

c++ casting

11
推荐指数
2
解决办法
5535
查看次数

奇怪的默认构造函数语法

在一些遗留代码中看到以下内容:

class A {
    &A() { ... }
}
Run Code Online (Sandbox Code Playgroud)

什么"&"用于?它在VC++ 2008中编译,看起来像默认构造函数,bug gcc无法编译它.

c++ visual-c++

10
推荐指数
1
解决办法
272
查看次数

STL和发布/调试库混乱

我正在使用第三方.我正在使用它的共享库版本,因为库很大(~60MB)并且被多个应用程序使用.

有没有办法在应用程序启动时发现库的发布/调试版本分别用于我的应用程序的发布/调试版本?

更长的描述

暴露C++接口的库.其中一种API方法返回std::vector<std::string>.

我在调试模式下编译应用程序时的问题,应该使用库的调试版本.同样的发布.如果使用了不正确的库版本,应用程序将崩溃.

根据gcc(参见http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt03ch17s04.html)

但是对于可以使用调试模式或发布模式basic_string对象的混合模式标准库,事情会变得更复杂

PS 1

看起来Timbo的提议是一种可能的解决方案 - 使用不同的soname来调试和发布库.那么,应该将什么传递给./configure脚本来更改库的名字?

PS 2

我的问题不是在链接时,而是在运行时.

PS 3

是一个问题,展示了我面临的问题.

c++ linux gcc shared-libraries

10
推荐指数
2
解决办法
4131
查看次数