1
12
我认为夏普图斯的回答是准确的。C++标准(SC22-N-1111.pdf)第123.4节标题“转换”清楚地表明,只允许一个隐式用户定义的转换。
|
2
9
正如人们已经达成的共识:是的,你是对的。 但是,由于这个问题/答案很可能成为StCube上C++隐式转换的参考点,所以我想补充一下,对于模板参数,规则是不同的。 不允许对用于模板参数推导的参数进行隐式转换。这看起来很明显,但也可能导致微妙的奇怪。 case-in-point,std::string加法运算符
(一)编译、工作良好;
(2)给出编译器错误
|
3
8
没错,只有一个 隐性的 允许转换。 一行中的两个转换可以使用转换运算符和参数化构造函数的组合执行,但这会导致 C4927 warning -“非法转换;隐式应用了多个用户定义的转换”-在VC++中是有原因的。 |
4
6
The C++ Programming Language (第四)。爱德华兹) (第18.4.3节)规定
“用户定义的”部分使其听起来像在本地类型之间允许进行多个隐式转换。 |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
rainer · 后台插入程序的初始化 1 年前 |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |