我有一个指向 Fred 指针的常量指针,但我不明白为什么 static_cast 不足以满足要求。typedef struct { int n; } Fred; Fred *pFred; Fred **const ppFred = &pFred; void **const p...
当使用具有可变大小结构(必须分配为byte[],然后转换为struct的结构)的各种API时,如果unique_ptr holder可以指向该结构,那么将会很好,因为这就是我们将要使用的内容。 示例:std::unique_ptr<VARIABLE_SIZE_STRUCT[]> ...
我正在编写一些使用fstream read()函数的代码,该函数期望一个char*作为缓冲区。稍后,我希望使用该缓冲区中的字节作为无符号字符进行操作,因此我要么:1. 声明缓冲区为char*,然后稍后对每个元素进行static_cast 2. 声明缓冲区为unsigned char*,然后在将...
更具体地说,假设B是可访问的基类A,下面的代码是否产生未定义行为,并且按照标准,断言是否保证不会触发?void test(B b1, B b2) { A* a2 = &b2; auto offset = reinterpret_cast<char*>(a2) - r...
考虑以下类型:struct S { char v; }; 给定一个由const S组成的数组,是否有可能以符合标准的方式将其重新解释为const char数组,其中它的元素对应于每个原始数组元素的成员v的值,反之亦然?例如:const S a1[] = { {'a'}, {'4'}, ...
下面的例子来自于cppreference.com的std::aligned_storage页面:(链接) #include <iostream> #include <type_traits> #include <string> template<c...
这种类型转换是否安全?vector<int*> a; const vector<const int*>& b = reinterpret_cast<const vector<const int*>&>(a); 在这种情况下,静态转...
请问有人能解释一下关于类型转换的代码吗?具体在http://en.cppreference.com/w/cpp/types/aligned_storage中。 以下代码可以吗: return *static_cast<const T*>(static_cast<const...
你能提出至少一个场景,在这个场景中,两种技术之间有显著的差异吗? union { T var_1; U var_2; } 并且 var_2 = reinterpret_cast<U> (var_1) 我越想越觉得它们从实际角度看起来是一样的。 我发现的一个区别是,虽...
我有一个指向std::vector<char>的引用,我想将其作为参数传递给一个接受std::vector<unsigned char>的函数。 我能在不复制的情况下做到这一点吗? 我有以下函数并且它可以正常工作; 但是我不确定是否实际上发生了复制-有人可以帮助我理解...