对于整数或枚举类型,T t {x}和T t = {x}之间的差异?

安德鲁·托马佐斯(Andrew Tomazos)

在C ++ 14中:

对于任何整数或枚举类型T以及任何表达式expr

之间是否有区别:

struct S { T t { expr }; };

struct S { T t = { expr }; };

更新:

[dcl.init.list]p3b5说到:

如果初始化列表具有单个E类型的元素,并且T不是引用类型,或者它的引用类型与E引用相关,则从该元素初始化对象或引用。

我相信这句话既适用于直接列表初始化适用于复制列表初始化

所以我认为答案是否定的,没有区别。

逻辑资料

如果看一下直接初始化复制初始化引用,您会发现相同的词:

如果T是非类类型,则在必要时使用标准转换将other的值转换为T的cv不合格版本

因此应该没有区别。这些初始化的区别只适用于类类型:拷贝初始化没有考虑explicit构造函数和explicit用户自定义转换操作,直接初始化呢。整数和枚举类型都没有。

编辑:
@ᐅJohannes Schaub-litbᐊ回答了一个与此相关的问题(仅关于括号,而不是括号),并且他引用8.5/14了类似的措辞(强调我的意思):

初始化的形式(使用括号或=)通常是无关紧要的,但是当初始化器或要初始化的实体具有类类型时,它就很重要见下文。如果要初始化的实体不具有类类型,则带括号的初始化器中的expression-list应为单个表达式。

我也找不到{}标准中对应对象。我希望这是足够的论据来支持没有不同的答案。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

cast(T)x和to!T(x)之间的差异

t和* t之间的差异

“ A <T>(IList <T> x)其中T:I”和“ A(IList <I> x)”之间的区别?

MYSQL - 其中 x=x 和 z=z 和 t=t

Query <T>,Get <T>和Load <T>之间的NHibernate差异

EasyMock.createStrictMock(class <T> x)和EasyMock.createNiceMock(class <T> x)之间的区别

ss 和 t 定位之间的结果差异?

List <T>和IQueryable <T>之间的执行差异

Box <T>和RefCell <T>构造函数之间的行为差异

形式差异T,T&和T &&

FFmpeg:atrim = a:b和aselect ='介于(t,a,b)之间的差异

[T]和&[T]之间的混淆

x * x ^ T的Matlab符号计算

a [len(a):] = [x]和a [len(a)] = [x]之间的差异

append和x = [x,element]之间的差异

x * 0.1和x / 10之间的差异?

表t中的选择t与HQL中的表之间的差异

x86汇编AT&T语法中“%register”和“(%register)”之间的区别?

(<T>(x:任何):x是T [] => x && typeof x.length ==='数字')

uint16_t和uint32_t之间的差异

Rust中的所有权跟踪:Box <T>(堆)和T(堆栈)之间的差异

vm_offset_t,(void *)和mach_vm_size_t之间的差异

map( T => Future[U]) 和 flatMapConcat( T => Source.fromFuture(Future[U])) 之间的 Akka 流差异

类型参数[Nothing,X]不符合类型参数范围[T,X <:XX [T]]>

给定序列S和T,找到序列X和Y,使得S和T属于X和Y的混洗。(X和Y可能不存在)

在Scala中用于类型构造函数的F [_]和F [T]之间的差异

与“”和“\ T”在java中的差异

dplyr管道数据-`.`和`.x`之间的差异

MemoryPool <T>和ArrayPool <T>之间的区别