16得票2回答
为什么使用花括号初始化时进行缩小转换不会导致错误?

我在《C++编程语言第四版》的第二章:C++概览:基础知识中学习了用大括号包围的初始化表达式。 以下是书中的引用: =形式是传统的,可追溯到C,但如果有疑问,请使用一般的{}-列表形式(§6.3.5.2)。 如果没有其他问题,它可以避免信息丢失的转换(缩小转换; §10.5):i...

15得票7回答
在结构体或数组的 { } 初始化中,使用 -1 初始化无符号整型

非常简洁 如何创建一个所有位都设置的无符号常量? ... 你可以用 { } 初始化字段, ...不会得到来自GCC 4.7.2的 -Wnarrowing 警告。 以下方法均不满足要求: struct U { unsigned ufield; }; struct Uc { unsign...

14得票1回答
为什么对于char括号初始化,const int是合适的?

我曾以为花括号初始化不允许缩小转换。但是为什么对于char类型的花括号初始化却允许使用int const呢? int value1 = 12; char c1{value1}; // error! no narrowing const int value2 = 12; char c2{v...

12得票2回答
理解gsl::narrow的实现

C++核心准则中有一个narrow转换,如果转换改变了值就会抛出异常。看一下微软实现的库: // narrow() : a checked version of narrow_cast() that throws if the cast changed the value template ...

12得票1回答
C++:使用花括号在赋值过程中防止缩小类型转换

我熟悉使用花括号/初始化列表来防止变量初始化时的收窄,但在给变量赋值时也使用它是一个好的做法吗? 例如:int i{1}; // initialize i to 1 double d{2.0}; // initialize d to 2.0 i = {2}; //...

11得票1回答
gcc是否有错误,未在非类型模板参数中诊断缩窄转换?

以下程序在gcc 4.8.1下无误警告地编译,使用的参数是-Wall -std=c++11: template<unsigned N> struct A{}; int main(){ A<1-2> a; (void)a; return 0; ...

10得票1回答
必应搜索API:按日期缩小范围

在Bing API的当前版本中,是否可以使用Bing的“按日期缩小范围”功能? 我找不到如何缩小搜索结果的信息,以便仅显示“过去24小时”或“过去一周”等时间段的结果。 网站/文档对我可以做什么以及不能做什么并不十分清晰。你们中是否有人知道这是否可能? 我在他们的高级搜索关键词页面上看到...

9得票2回答
Optional<>和返回类型缩小化

在Java 8之前,如果返回“不安全”的对象(即对象或null),我可以在子类中专门化返回类型: class A {} class B extends A {} interface Sup { A a(); /* returns A instance, or null */ } interf...

9得票1回答
忽略C++0x中的窄化转换会有什么后果?

自从在g++中启用了C++0x标准后,我开始看到“缩窄转换”错误,特别是当将“int”转换为“short”时,尽管我了解该错误覆盖了更广泛的转换。有人能解释一下引入这种额外安全级别的理由吗?禁用此错误可能会产生哪些可能的后果?(除了潜在的精度损失)。谢谢。

8得票2回答
泛型中的类型缩窄

我希望在一个函数中链接两个泛型类型,并通过检查其中一个来缩小两个类型的范围。正确的方法是什么? type A = 'A'; type B = 'B'; type AB = A | B type ComplexType&lt;T&gt; = {value: T} const f = (n...