小编Ves*_*niK的帖子

为什么auto被推导为int而不是uint16_t

我有以下代码:

uint16_t getLastMarker(const std::string &number);
...
const auto msgMarker = getLastMarker(msg.number) + static_cast<uint16_t>(1);
static_assert(std::is_same<decltype(msgMarker), const int>::value, "Should fail");
static_assert(std::is_same<decltype(msgMarker), const uint16_t>::value, "Should not fail");
Run Code Online (Sandbox Code Playgroud)

我希望第一个断言会失败而第二个断言不会失败.然而,gcc 4.9.2clang 3.6做相反的事情.如果我在我的代码中使用uint16_t而不是auto,则正确的断言失败而另一个成功.

PS最初我只是1代替static_cast<uint16_t>(1)并且认为问题是由数字文字1具有int类型但错误断言甚至在此处显式转换后失败的事实引起的.

c++ integer-promotion auto c++11

19
推荐指数
2
解决办法
846
查看次数

相对于DBUnit数据集中当前的日期

我想知道是否有任何方法可以在DBUnit XML数据集中明确指定日期作为日期.有时代码逻辑在将来的日期和过去的日期是不同的,我想测试这两种情况.当然,我可以指定类似于2239年11月5日的东西,并确保测试在这个日期之前有效,但有更优雅的方式.

我在Java开发期间还没有遇到过这样的情况,但是一旦我遇到代码逻辑在日期前一天,日期前两天和日期前两天以上不同的经历.在这种情况下,编写数据库驱动测试的唯一可能解决方案是在数据导入期间插入相对日期.

DBUnit是否为此提供了任何设施?

java dbunit unit-testing

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

如何在QObject :: connect中使用QMetaMethod

我有两个QObject子类实例和两个QMetaMethod信号实例,其中一个对象和另一个对象中的插槽.我想把这个信号和插槽相互连接起来.

我查看了qobject.h文件,发现SIGNAL()和SLOT()宏只是在方法签名的开头添加"1"或"2"字符,所以看起来应该可以添加相同的字符到QMetaMethod :: signature()返回的字符串的开头,但这种方法取决于一些未记录的工具包内部,并且可能随时被新版本的Qt破坏.

有没有人知道通过QMetaMethod反射表示连接信号和插槽的可靠方法?

编辑: 我在Qt问题跟踪器中创建了建议:https: //bugreports.qt.io/browse/QTBUG-10637 如果有人也对此功能感兴趣,您可以在那里投票支持此票.

c++ qt qt4

7
推荐指数
2
解决办法
4362
查看次数

Protobuf 重复消息选项

我试图通过扩展 google.protobuf.MessageOptions 将一些文档元信息附加到 protobuf 消息。我的元信息选项之一可能会出现不止一次。看起来我可以声明重复选项,但如何在消息中使用它?

这是我尝试实现的目标的示例:

extend google.protobuf.MessageOptions {
    optional string description = 51234;
    repeated string usages = 51235;
}

message MyMsg {
    option (description) = "MyMsg description";
    option (usages) = ???

    optional bool myFlag = 1;
    optional string myStr = 2;
}
Run Code Online (Sandbox Code Playgroud)

我应该输入什么而不是???如果我想记录两种不同的使用方式?

protocol-buffers

5
推荐指数
1
解决办法
5892
查看次数

标签 统计

c++ ×2

auto ×1

c++11 ×1

dbunit ×1

integer-promotion ×1

java ×1

protocol-buffers ×1

qt ×1

qt4 ×1

unit-testing ×1