- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
浏览 twitter我找到了这个 C++23 代码示例。
这是我的 adaptation of it, 使我感兴趣的更明显(我不关心回复中提到的悬空问题)。
#include <vector>
#include <string_view>
#include <iostream>
#include <type_traits>
int main() {
std::vector v{84.72};
std::basic_string_view sv = v;
static_assert(std::is_same_v<decltype(sv), std::basic_string_view<double>>);
const auto val = *std::begin(sv);
std::cout << val;
}
我的问题是为什么 basic_string_view
上没有一些要求/概念约束?使其仅适用于 charish 类型,因此 basic_string_view<double>
在这个例子中不会编译?
最佳答案
我怀疑这是一个 char
- 类似类型:
struct Char {
char c;
Char() : c{} {}
Char(char c) : c{c} {}
};
为什么它不起作用?的确如此
std::basic_string<Char> str{'a', 'b'}; // OK
std::cout << str[0].c << std::endl; // prints a
std::cout << str.length() << std::endl; // prints 2
是什么让这个类(class)如此特别?
struct Char {
int c;
Char() : c{} {}
Char(int c) : c{c} {}
};
没什么,除了我们决定 char
是一个字符并且int
不是。 (这正是我必须写 std::cout << str[0].c
而不能写 std::cout << str
或 std::cout << str[0]
的原因,因为 <<
为 char
和其他东西而重载,但肯定不是我自己的类型.)
因此,正如一些评论所暗示的那样,底线是一个反问题:
How would you define a "charish" type?
我会改写为
Can we encode the definiton of "sequence of
char
-like objects" in a concept?
这又引出了另一个问题:
What operations can you do only on a "sequence of
char
-like objects" that you can't do on all "sequences of non-char
-like objects"?
我想不出一个。
因此,如果您想强制执行您提到的约束,您最终会明确列出 char
, wchar
,以及一些 SFINAE 事物中的所有其他事物。
然后你不能将它用于任何其他类型。
关于c++ - 为什么basic_string_view不限于字符类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70682156/
我不是 100% 确定以下代码在语义上是正确的: #include #include int main() { std::string str = "lvalue string";
有没有一种直接有效的方法来转换std::sub_match至 std::basic_string_view (没有构造中间 std::basic_string 并且没有中间堆分配)?或者更进一步的抽象
根据 [string.view.synop] : // ... // [string.view.hash], hash support template struct hash; template<>
C++17 正在引入 std::basic_string_view,它是非拥有字符串版本,其类仅存储指向字符串第一个元素的指针和字符串的大小。还有理由继续使用 C 字符串吗? 最佳答案 Is ther
我的问题是关于 C++17 : http://en.cppreference.com/w/cpp/string/basic_string_view/basic_string_view 从 std::b
我的问题是关于 C++17:http://en.cppreference.com/w/cpp/string/basic_string_view/basic_string_view 从 std::bas
我是一名优秀的程序员,十分优秀!