据我所知,
std::to_integer<T>
相当于 T(value)
,其中 value
是一个类型为 std::byte
的变量。我查看了一些主要编译器的实现,发现在这种情况下,“相当于”字面上意思是“作为实现”。换句话说,在大多数情况下,to_integer
实际上被实现为:return T(value);
就是这样。
我不明白这样一个函数的目的是什么?
具有讽刺意味的是,它的缺点甚至比优点还要多。我应该为这样一个函数包括整个头文件,只是为了避免类似C语言的强制转换,而这种转换很可能直接内联。
除了作为类似C语言强制转换的“好看”替代品之外,还有其他原因吗?
std::byte
,那个头文件已经被包含了(或者最好被包含了!) - StoryTeller - Unslander Monicastd::to_integer<T>
是一个constexpr
,但对于T(value)
并不一定相同。 - Silvano CerzaT(value)
。它怎么可能不同于T(value)
呢?我不明白,但听起来很有趣,如果可能的话,我邀请您在答案中更好地阐述这一点。谢谢。 - skypjack