MFC工程中如何正确使用大括号或gsl::narrow_cast?

How to correctly use braces or gsl::narrow_cast in MFC project?

我从我的研究中看到这里讨论过这个问题,但我仍然遇到问题并且不确定。

我的代码:

m_gridAssignHist.SetRowCount(static_cast<int>(mapHistory.size()) + 1);

代码 analysys 说要么使用大括号要么 gsl::narrow_cast:

m_gridAssignHist.SetRowCount(gsl::narrow_cast<int>(mapHistory.size()) + 1);

代码分析的建议点是检查收缩转换

int{value} 是缩小转换,可以在 编译时 中检查,如果 value 是常量。 int{mapHistory.size()} 不应该编译。

gsl 检查是 runtime,所以它实际上会检查你的情况下的值范围。要使其编译,obtain gsl library,并使其可供编译器使用。