小编Gur*_*pof的帖子

reinterpret_cast到C风格的数组是非法的C++ 11吗?

为什么以下代码不赞成?

double d[4] = {0,1,2,3};
reinterpret_cast<double[2]>(d);
Run Code Online (Sandbox Code Playgroud)

海湾合作委员会宣布它invalid cast from type 'double*' to type 'double [2]'和铿锵声称reinterpret_cast from 'double *' to 'double [2]' is not allowed

现在万一意图不明显,我希望这段代码返回一个包含{0,1}的double [2],非常像一个reinterpret_cast<double*>(d)遗嘱.(因此我知道它可以使用指针,所以这不是我要求的)

c++ arrays casting reinterpret-cast

3
推荐指数
2
解决办法
3815
查看次数

短手OCaml"类型平等"

是否有一个可以像这样实现的函数的简写OCaml表示法:

match e with
  Mycons ( _ ) -> true
  | _ -> false
Run Code Online (Sandbox Code Playgroud)

我正在思考,typeof(e) == Mycons但我还没有找到任何东西.

ocaml

2
推荐指数
1
解决办法
248
查看次数

CMake:关于clang版本的分支

对于clang ++,如何实现下面的cmake分支?

if (GXX_VERSION VERSION_GREATER 4.5 OR GXX_VERSION VERSION_EQUAL 4.5)
    ...
Run Code Online (Sandbox Code Playgroud)

谢谢,

c++ cmake

1
推荐指数
1
解决办法
1940
查看次数

在将std :: string分配给char [n]以进行POD初始化时,如何解决不兼容的类型

一个无法分配std::stringchar[n](它会产生错误error: incompatible types in assignment),但通常情况下,一个可以解决这个使用strcopy(例如,第一个答案).

我正在寻找类似的技巧,以便在POD内初始化char [n].这就是我想要做的事情:

#include <string>
typedef struct{
    char str[16];
} Pod;

int main() {       
    std::string s("does not compile");
    Pod pod = {s};
}
Run Code Online (Sandbox Code Playgroud)

此代码产生以下错误:error: cannot convert ‘std::string {aka std::basic_string<char>}’ to ‘char’ in initialization.

谢谢


编辑:我非常喜欢一个允许我修改Pod和字段的解决方案.此外,我想保留初始化程序,在现实世界中有更多的字段.


编辑2:只是提醒一下下面的代码是有效的,所以可能会做一些小而漂亮的事情: Pod pod = {"this works"}

c++

1
推荐指数
1
解决办法
1523
查看次数

标签 统计

c++ ×3

arrays ×1

casting ×1

cmake ×1

ocaml ×1

reinterpret-cast ×1