从我从得到的回答这个问题,看来C++继承了这一要求,对于转换short成int从C.执行算术运算时,我可以挑你的大脑,以为什么这是用C首先介绍?为什么不做这些操作short呢?
例如(取自评论中的dyp建议):
short s = 1, t = 2 ;
auto x = s + t ;
Run Code Online (Sandbox Code Playgroud)
x将具有int类型.
基本上,我想实现一种float16类型.但是这个问题不是关于如何做到这一点的细节,而是如何设置,以便我的新float16类型适当地使用float,double和所有整数类型.
我希望我的float16类型可以类似地转换为float或double.例如,它应该隐式地转换为这两种类型.它也应该有std :: common_type(http://en.cppreference.com/w/cpp/types/common_type),因为std :: common_types对其他float类型表现得类似.这意味着std::common_type<my_float16, float>::type = float,std::common_type<my_float16, double>::type = double和std::common_type<my_float16, T>::type = my_float16其中T是任意整数类型.
我需要编写哪些构造函数和强制转换操作符才能使其工作?任何帮助,将不胜感激!
我最近的另一个问题可能是相关的.
编辑:好的,我已经建立了像安东那样的最小例子.它是
struct float16 {
explicit operator int() {
return 0;
}
operator float() {
return 0.0f;
}
};
Run Code Online (Sandbox Code Playgroud)
这对于float和float16有正确的公共类型,但int和float16的公共类型仍然是int.我不明白这个.