我知道您可以使用static_cast<void>,但它对我来说似乎太冗长了,并且没有反映我想要丢弃返回值而不是将其转换为任何东西的初衷。
最近我偶然发现std::ignore,它可以接受任何类型的值,名称清晰易读,对我来说似乎很合适。
我知道最初的意图是std::ignore与 一起使用std::tie来丢弃任何不需要的值,但我猜想 的最初意图static_cast是为了比丢弃值更好的原因而实际转换值,这样编译器就不会抱怨。
那么,可以用于std::ignore我在问题中描述的目的吗?
例如:
std::ignore = std::transform(...);
Run Code Online (Sandbox Code Playgroud) 在下面的代码中,我定义了一个9 字节的结构头,它与 16 字节的大小对齐。然后我从堆中动态分配 9 个字节并将其分配给标头指针。
struct header
{
uint8_t chunk_id;
long int format;
};
int main()
{
std::cout << "sizeof(header) " << sizeof(header) << '\n';
auto head = (header*)malloc(9);
head->chunk_id =3;
head->format=5;
std::cout << (int)head->chunk_id << " " << head->format << '\n' << sizeof(*head);
free(head);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
sizeof(header) 16
3 5
16
Run Code Online (Sandbox Code Playgroud)
事实证明,sizeof仍然通知这个对象是 16 个字节(尽管它是 9 个)。我想它只是看结构的定义。但是,当sizeof的大小与实际对象大小不匹配时,一切如何工作(包括运算符“->”)?
目前我正在尝试为 OAuth 2.0 授权流程创建一个客户端,实际上是一个本机应用程序。此处的规范指出有 3 种方法来处理重定向 URI:自定义 URI 方案、环回接口和声明的“https”方案 URI。
我很难掌握如何实现这些东西,因为我尝试在互联网上找到它但无济于事(当我在环回服务器或自定义 url 方案上寻找信息时,我没有遇到这样的问题实现,事实上我已经成功地实现了它们)。
我确信我用错了词,所以我寻求帮助。如何允许应用程序声明“https”方案 URI?有些资源会很完美。平台是Windows和Linux。