我想知道,因爲預定義的文字如ULL
,f
等顯然是在編譯時解決的。標準(2.14.8 [lex.ext])似乎並不限定於此,但它似乎向運行時趨向:用戶定義文字是在編譯時還是運行時解決的?
[2.14.8/2]
用戶定義的字面被視爲對文字操作符或文字操作符模板(13.5.8)的調用。對於 確定這種調用的形式,這種調用對於具有ud-suffix X的給定的用戶定義的文字L,使用非限定名稱的規則在L的上下文中查找其文字後綴標識符爲X的文字操作符ID 查找(3.4.1)。設S是由此查找找到的一組聲明。 S不得空着。
(重點煤礦。)
但是,對我來說這似乎引入不必要的運行時開銷,文字只能被追加到可在編譯時反正像13.37f
或"hello"_x
值(其中_x
是用戶定義的文字)。
然後,我們得到了模板化的用戶定義文字,它在標準AFAICS中從未真正定義(即沒有給出示例,請證明我錯了)。這個函數是不是在編譯時被神奇地調用,還是仍然是運行時?
謝謝,完全忘了'constexpr'。 :)也感謝那一段。 – Xeo 2011-04-16 11:28:23
尋找NUL終止似乎是可疑的,當你交了長度。 – 2013-02-17 00:19:48