问题标签 [user-defined-literals]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
405 浏览

c++ - 可以向 C++ 用户定义的文字运算符传递空指针吗?

可以向 C++ 用户定义的文字运算符传递空指针吗?

这确实发生在 g++ 的实验版本(gcc 版本 4.7.0 20111114 (experimental) [trunk revision 181364] (Debian 20111114-1))中,但我不确定这是一个错误(90% 肯定)还是一些奇怪的预期行为。

示例程序:

输出(可能是 gcc 中的一个错误......但也许不是?!,因此问题):

这不仅仅是“0_example”;每当文字值为零时。例如,即使文字是“0x0000_example”,它仍然会发生。

这是一个错误吗?或者当文字的值为零时一些奇怪的特殊情况?

0 投票
2 回答
642 浏览

c++ - 有没有人有关于使用运营商“”的信息?

Bjarne Stroustrup 今天为 Going Native 2012 会议做了主题演讲。在他的演讲中,他讨论了执行正确单位的问题。他对此的优雅(恕我直言)解决方案涉及使用我以前从未听说过的运算符:operator"". 使用此运算符,他能够编写如下所示的 C++ 代码:

在哪里operator""m(...)operator""s(...)被定义。

有谁知道有关如何实际使用此运算符的任何文档(或者即使任何现代 C++ 编译器都支持它)?我尝试在网上搜索,但没有运气。任何帮助将不胜感激。

0 投票
2 回答
2287 浏览

c++ - Physical Boost.Units 用户定义文字

现在我们很快就有了用户定义的文字(UDL),例如在 GCC 4.7 中,我急切地等待(物理)单元库(例如Boost.Units )使用它们来简化文字的表达,例如1+3i,或. 有没有人使用支持这种行为的 UDL为Boost.Units编写了扩展?3m3meter13_meter

0 投票
1 回答
1375 浏览

javascript - 在 Extjs 中动态扩展类

我需要动态扩展类并使用以下代码:

但它给了我一个错误:

我试图把它改成这个

但错误是

问题在于动态文字。当我这样做时,它工作正常

我该如何解决?我究竟做错了什么?

提前谢谢。

0 投票
2 回答
418 浏览

c++ - 为什么 std::string 不定义乘法或文字?

在我第一次接触的语言中,有一个函数repeat(),它接受一个字符串,并重复它n多次。例如,repeat ("hi", 3)给出 的结果"hihihi"

我确实有很多次使用这个函数,但令我沮丧的是,我从未在 C++ 中找到类似的东西。是的,我可以很容易地自己制作,或者让它更易于使用,但我有点惊讶它还没有包含在内。

它非常适合的一个地方是std::string

这将允许以下语法:

现在它本身还不是很好,但它可能会更好,这让我想到了我的另一部分:文字。

每当我们使用字符串运算符时,例如operator+,我们必须确保一个参数实际上是一个字符串。他们为什么不直接为它定义一个文字,比如""s?不以下划线开头的文字后缀是为实现保留的,所以这不应该冲突,因为在任何人真正开始制作自己的之前如何添加它。

回到重复的例子,语法就是:

这将产生:

同时,也可以包括一个字符,以满足cout << '1's + '2's;

为什么不包括这两个功能?它们肯定有明确的含义,并且使编码更容易,同时仍然使用标准库。

0 投票
2 回答
1209 浏览

c++ - 可以强类型化基于字符串的用户定义文字吗?

C++ 中新的用户定义文字概念暗示了字符串文字的一些非常有趣的用途,例如:

但是,当我在 gcc 中构建这些类型的结构时,例如:

我收到以下错误:

通过阅读,我猜测从字符串文字派生的 UDL 无法使用可变参数模板形式。

  1. 实际上是不是使用可变参数模板形式无法解析字符串文字?
  2. 如果是这样,有没有人知道为什么这种有用的 UDL 形式被排除在标准之外?
0 投票
3 回答
579 浏览

c++ - char 类型的编译时间一致哈希

我想以Symbol与 ruby​​ 相同的方式实现。

为此,我创建了一个用户定义的文字,它返回对应std::hash的a std::basic_string<T>

代码很棒,但是当我在某处读到时,哈希函数在同一程序的多次执行中可能不一致。此外,我想在编译时进行此计算,这是 1) 不支持std::hash和 2) 如果std::hash返回值更改会破坏代码。

所以我写了下面的实现,基于java.lang.String.hashCode实现。

我的问题是:这个实现有什么问题吗?

我只能在 GCC 4.7.1 上对其进行测试,我想知道它是否符合标准并且也应该在其他编译器上工作。

我问这个是因为以前的实现是在 GCC 上工作的,但是如果二进制文件是用 clang++ 编译的,则会导致段错误(我认为增量运算符的未定义行为问题)。

提前致谢

编辑

使用 clang++(感谢 KennyTM)

0 投票
1 回答
994 浏览

c++ - g++ 4.7 将运算符 "" 评估为宏扩展的兄弟

我正在将一些代码移至 GCC 4.7(从 4.6 开始)并遇到一些编译器错误并发现GCC 4.7 移植指南中记录的问题:

用户定义的文字和空格

ISO C11 模式下的 C++ 编译器std={c++11,c++0x,gnu++11,gnu++0x} 支持用户定义的文字,这与一些有效的 ISO C++03 代码不兼容。

特别是,现在在字符串文字之后和可能是有效的用户定义文字之前需要空格。获取有效的 ISO C++03 代码

在 C++03 中,TIME宏扩展为一些字符串文字并与另一个连接。在 C++11__TIME__中没有扩展,而是operator "" __TIME__被查找,导致以下诊断:

这适用于任何字符串文字,后面跟着一些宏而没有空格。要修复,只需在字符串文字和宏名称之间添加一些空格。

虽然我可以修复错误,但我想知道为什么我必须这样做。__TIME__是一个宏,所以"something"__TIME__会在预处理阶段变成"something""15:52:03"(或类似的),所以编译器永远没有机会看到它operator ""

这种行为标准是批准的还是一个错误?

0 投票
1 回答
2355 浏览

c++ - 在哪里可以找到 C++11 类型前缀/后缀的列表?

有人可以指出语言类型前缀/后缀的完整列表吗?

前缀示例:

后缀示例:

我所有的搜索尝试都让我去“制作你自己的用户定义的文字”。
也许这些实例有一个我不知道的特定名称?

0 投票
2 回答
513 浏览

c++ - 用户定义的字符串文字与。其他用户定义的文字

让我们考虑以下来自 C++11 标准(准确地说是 N3376 草案)的引用:

(2.14.8.5)

如果 L 是用户定义的字符串文字,则令 str 为不带 ud-suffix 的文字,令 len 为 str 中的代码单元数(即,其长度不包括终止空字符)。文字 L 被视为形式的调用

而对于所有其他类型的用户定义文字(浮点、整数、字符),即使文字本身作为字符串传递,长度也永远不会传递。例如:

为什么字符串和非字符串用户定义文字之间存在这种区别?或者我应该说,为什么实现为 UD 字符串文字传递 len?与其他文字的情况一样,长度可以通过空终止来推断。我错过了什么?