问题标签 [conversion-operator]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 用于 lambda 的显式用户定义转换运算符
这篇文章专门讨论 lambda 函数,特别是涉及到它们的ClosureType::operator ret(*)(params)()
. 在文章中,该运算符称为“通用无捕获 lambda 用户定义转换函数模板”。
给定代码(自动转换为适当类型的函数指针):
#if 0
代码中的函数to_function_pointer
无法将 lambda 转换为相应的函数指针。这是否意味着提到的运算符是由explicit
关键字“隐式”标记的?标准中有相应的条款吗?
c++11 - clang++ 失败,但 g++ 成功在赋值中使用强制转换为 const 无关类型运算符
这是一个简短的示例,它使用柠檬为 clang 重现了这种“不可行的转换”,但对于 g++编译器行为的差异有效。
住在 Godbolt's
g++ (4.9, 5.2) 静默编译;而 clang++ (3.5, 3.7) 编译它
如果
或者
被使用, 但不与默认值一起使用
在那种情况下 clang++ (3.5) 责备a = b
:
参考 2011¹ 标准:clang++ 拒绝默认代码是正确的,还是 g++ 正确接受它?
Nota bene:这不是关于那个const
限定词是否cast_type
有意义的问题。这是关于哪个编译器符合标准并且仅关于那个。
¹ 2014 在这里不应该有所作为。
编辑:
请不要使用通用 c++ 标记重新标记它。我首先想知道哪种行为符合 2011 年标准,并且暂时让委员会的奉献精神远离not to break existing (< 2011) code
ansatz。
c++ - object.operator bool() 和 (bool) 对象有什么区别?
我有一个类,我已经像这样显式地重载了运算符 bool:-
但是,当我在 gdb 中运行以下两个时,我得到:-
这两个调用有什么区别,为什么它们返回不同的东西?
编辑:- 我正在使用 clang 编译器。
注意:- 第二个值 (false) 是我希望使用第一种语法返回的正确值。我正在使用代码生成器,因此我无法完全控制生成的 c++,以防有人好奇我为什么不只使用第二种语法。
即使在那种情况下,两者之间的差异仍然是一个悬而未决的问题。
c++ - 二阶隐式转换
考虑以下代码:
直到最近,我还认为标准和编译器足够“聪明”,可以在需要的转换序列存在时找到它。
换句话说,我在想它bool b2 = s
会转换s
为first
,然后转换为bool
。但显然它没有发生。
获得 和 的等效行为的正确方法是first
什么second
?
c++ - 具有默认模板参数的转换运算符
c++ - 运算符 T&() 还是运算符 T()?
在定义转换运算符时,定义
超过
假设我不关心返回值而不是引用的潜在性能增益。
c++ - 运营商必须采取“无效”
假设我有两个类:
我想将 a 隐式转换Location
为 a Point
:
所以,我operator
在里面添加了这个Point
:
g++ 4.9.2
我在 Debian 上编译,并收到此错误:
听起来编译器希望运算符不接受任何参数,但这似乎不对——除非我错误地使用了运算符。这个错误背后的真正含义是什么?
c++ - 具有多个函数和多个转换运算符的重载解决方案
考虑简单的代码:
上面的代码工作正常,正如预期的gcc、clang 和 VC++选择foo(char)
.
现在让我们稍微修改一下代码:
现在这应该有选择foo(double)
,但似乎只有VC++对代码感到满意,而clang 和 gcc对上述代码不满意。
谁能解释为什么上面的代码失败了?还是它的错误?
还有一个问题:gcc 和 clang 是否共享重载解析代码?
c++ - 带参数的 C++ 转换运算符
有没有办法定义一个带参数的转换运算符?
这是我的用例:
我有 HSB 和 RGB 颜色之间的转换运算符,以及 RGBA 到 RGB(通过删除 alpha),但我很难从 RGB 转换为 RGBA,因为我需要能够提供 alpha 作为参数(而不是始终默认为一个)。
我假设我将不得不退回到类似的东西:
但是,我更喜欢使用标准 C++ 转换,所以我只是想知道是否有任何方法可以使用带参数的转换运算符。
c++ - 通过转换运算符调用显式实例化的模板函数
让我们假设我们有一个函数模板,它在 cpp 文件中借助显式实例化实现,如下所示:
函数.h
函数.cpp
我们现在可以在包含function.h的主文件中调用该函数,如下所示:
让我们进一步假设我们有一个这样实现的类:
数据.h
以下代码导致链接器错误 LNK2019: unresolved external (Visual Studio 2010):
我们可以使用以下表达式之一来为function ()
但是为什么不能只调用function(a)?是否存在任何其他解决方案来实现这一点,而无需显式实例化具有数据类型的function()?