簡體   English   中英

noexcept運算符->()和operator *()的迭代器?

[英]noexcept operators ->() and operator*() for an iterator?

我正在編寫一個效率很高的迭代器,我想知道是否可以將操作符operator->()operator*()noexcept因為它們只會在基礎指針上調用相同的運算符(但如果指針指向到不可用的內存部分,則程序可能會崩潰)?

為什么要這樣? 您的編譯器知道您的代碼,並且如果您從不扔掉您在運算符中所做的事情,那么您將不會獲得異常處理開銷。

但是,如果您在這些運算符中執行可能會拋出的操作,則從語義上講不能使用該說明符(除非您希望程序在拋出時立即退出)。

我個人認為noexcept在最晦澀的noexcept不會帶來任何可衡量的性能提升-支持它的編譯器正在生成后端代碼,該后端代碼不會對不會拋出的代碼造成性能損失。 對我來說, noexcept更是一種可編譯時可檢查的noexcept(expression)運算符形式的語言功能。 比較Bjarne的FAQ

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM