为什么以下代码不赞成?
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)遗嘱.(因此我知道它可以使用指针,所以这不是我要求的)
是否有一个可以像这样实现的函数的简写OCaml表示法:
match e with
Mycons ( _ ) -> true
| _ -> false
Run Code Online (Sandbox Code Playgroud)
我正在思考,typeof(e) == Mycons但我还没有找到任何东西.
对于clang ++,如何实现下面的cmake分支?
if (GXX_VERSION VERSION_GREATER 4.5 OR GXX_VERSION VERSION_EQUAL 4.5)
...
Run Code Online (Sandbox Code Playgroud)
谢谢,
一个无法分配std::string到char[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"}