我认为:
我会认为:
static_assert(is_same_v<
decltype(make_reverse_iterator(make_reverse_iterator(it)))
, decltype(it)>);
这段代码看起来应该是可以编译的,但实际上却不能。可能有一些原因导致了这个问题。在写模板时,这可能会导致生成的代码更大。
实现这并不难:
template <typename T>
T make_reverse_iterator(reverse_iterator<T> it) {
return it.base();
}
如果在调用模板函数时进行双倍或更多次反转,尤其是在该函数使用与其调用的相同的reverse_iterator递归调用自身时,会导致较小的二进制文件大小,而不会通过其他特殊化复杂化代码。