ULL
我想知道,因为像,等预定义的文字f
显然是在编译时解决的。标准(2.14.8 [lex.ext])似乎没有定义这一点,但它似乎倾向于运行时:
[2.14.8 / 2]
用户定义的文字被视为对文字运算符或文字运算符模板 (13.5.8) 的调用。为了确定对带有 ud-suffix X 的给定用户定义文字 L 的此调用的形式,使用非限定名称查找规则在 L 的上下文中查找其文字后缀标识符为 X 的literal-operator-id ( 3.4.1)。令 S 是此查找找到的声明集。S 不能为空。
(强调我的。)
但是,对我来说,这似乎引入了不必要的运行时开销,因为文字只能附加到编译时可用的值,例如13.37f
or "hello"_x
(_x
用户定义的文字在哪里)。
然后,我们得到了模板化的用户定义文字,它从未真正在标准 AFAICS 中得到定义(即,没有给出示例,请证明我错了)。该函数是在编译时以某种方式神奇地调用还是仍然是运行时?