gpt4 book ai didi

c++ - 编译器会优化模板 bool 吗?

转载 作者:太空狗 更新时间:2023-10-29 21:00:04 24 4
gpt4 key购买 nike

我有一个链表类,我刚刚编写了一组函数来使其与基于范围的 for 一起工作。为了将相同的类模板用于前向迭代器(例如使用 begin() 获得)作为反向迭代器(例如使用 rbegin() 获得),我向模板参数添加了一个 bool 值。在递增或递减期间,bool 被检查一次。它会被编译器优化掉还是会在运行时进行检查?

template< typename TYPE >
template< typename LINKTYPE, typename LINK, const bool REVERSE >
LinkList<TYPE>::IteratorBase<LINKTYPE, LINK, REVERSE> LinkList<TYPE>::IteratorBase<LINKTYPE, LINK, REVERSE>::operator++( int ) {
Link<TYPE> *old = cur;

if ( cur ) {
cur = REVERSE ? cur->GetPrevious() : cur->GetNext();
return old;
}

cur = nullptr;
return old;
}

这里是更完整的代码摘录:http://pastebin.com/vv7Wgm9T

最佳答案

C++ 标准中没有关于何时执行这样的优化的任何内容,因此它是严格特定于编译器的。因此,唯一确定的方法是查阅编译器的文档或编译代码并查看反汇编。它很可能会被优化掉,但不能保证这种行为。

关于c++ - 编译器会优化模板 bool 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23112412/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com