Questions tagged «user-defined-literals»

12
用户定义的文字为C ++添加了哪些新功能?
C ++ 11台引入了用户定义的文字,这将允许基于现有字面引入新文本语法的(int,hex,string,float),使得任何类型的将能够具有字介绍。 例子: // imaginary numbers std::complex<long double> operator "" _i(long double d) // cooked form { return std::complex<long double>(0, d); } auto val = 3.14_i; // val = complex<long double>(0, 3.14) // binary values int operator "" _B(const char*); // raw form int answer = 101010_B; // answer …

15
在C ++中方便地声明编译时字符串
能够在C ++中的编译期间创建和操作字符串有几个有用的应用程序。尽管可以用C ++创建编译时字符串,但是该过程非常繁琐,因为需要将字符串声明为可变的字符序列,例如 using str = sequence<'H', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'r', 'l', 'd', '!'>; 诸如字符串连接,子字符串提取等操作很容易实现为对字符序列的操作。是否可以更方便地声明编译时字符串?如果没有,那么作品中是否有建议可以方便地声明编译时字符串? 为什么现有方法失败 理想情况下,我们希望能够声明如下编译时字符串: // Approach 1 using str1 = sequence<"Hello, world!">; 或者,使用用户定义的文字, // Approach 2 constexpr auto str2 = "Hello, world!"_s; 哪里decltype(str2)会有constexpr构造函数。可以利用以下事实来实现方法1的更混乱的版本: template <unsigned Size, const char Array[Size]> struct foo; …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.