小编nmd*_*_07的帖子

在编译时区分别名和实际类型?

我编写了一个模板函数,它可以使用任意数量的类型,并为底层架构和操作系统显示它们的大小.但是,该函数无法区分真实类型的别名,因此将其评估为真实类型.

然而,我希望能够在编译时区分别名和内置类型,并根据它来交替输出.

func<unsigned int, size_t>();
Run Code Online (Sandbox Code Playgroud)

输出:

Unsigned int is 4 bytes.
Unsigned int is 4 bytes. 
Run Code Online (Sandbox Code Playgroud)

但是,我希望输出像,

Unsigned int is 4 bytes.
size_t is an alias for unsigned int.
Run Code Online (Sandbox Code Playgroud)

当然,这需要编译器能够在编译时区分别名和内置类型.

那么,在任何C++版本中,有没有办法在编译时区分真实类型和别名?

c++ alias c++14

6
推荐指数
2
解决办法
357
查看次数

Linux 中后台进程和守护进程之间的区别

后台进程不属于用户和终端,守护进程也不属于用户和终端。两者之间的主要区别是什么?如果我要编写一个服务器程序,我应该将其作为后台进程还是守护进程运行?

linux daemon process background-process server

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

关于算子优先级的信息冲突

我最近在Kenneth A. Reek的C书上读过Pointers.这本书有一个很好的C运算符表和它们的优先级.但是,当我检查其他资源以确保书中提供的信息是正确和最新的时,我看到有不同的信息.我将提供精确的例子来说明我的意思.

本书提供了一个函数调用运算符()具有最高优先级的表.后缀增量和减量运算符正在追赶.我检查了其他资源来验证信息.我已经检查了这个资源和这个资源和这个资源.这些资源中提供的优先级信息与Cinter上的指针中的说明相匹配.问题从cppreference中的优先级表开始,因为它具有与其他资源不同的优先级规则.

我错过了什么吗?

c expression operator-precedence associativity

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

将可选属性表示为C++类成员

我正在基于模式生成C++代码.存在实体,每个实体包含具有相应数据类型的每个属性的属性.现在问题是这些属性中的一些是"可选的",这意味着它们不必是类声明的一部分.但是,在C++中,某些东西要么是类的成员,要么不是类的成员,没有诸如"可选数据成员"之类的概念.

实体将是类名,属性将是类成员.我不确定如何表示标记为"可选"现有C++概念的属性.

c++ schema code-generation class

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

是否std :: memset等效于std :: array?

是否有相应的memset std::array?我认为memset在将数组初始化为零而不是循环遍历数组时应该表现得更好.我搜索了一个,std::array但在网上找不到任何东西.

c++ memset c++11 stdarray

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

c,i和s命令组合在VIM中

我已经使用VIM一段时间了,每次都让我感到惊讶.在本教程的 "构建句子"部分下,我看到了命令cis和组合yip.我已经使用了Vim很长一段时间,我熟悉普通模式下的大多数命令.我也知道以有意义的方式组合命令以产生组合动作.

但是,我在上面展示的例子(cisyip)完全打破了我对普通模式下VIM命令系统的理解."c"代表变化,"i"代表插入,"s"代表替代,但联合行动与我预期的不同.我还浏览了VIM帮助文件,但从未看过说明给定用法的示例.

有人可以澄清发生了什么吗?

syntax vim text editor

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

std::thread 导致程序中止

我有以下代码片段:

#include <thread>
int main(){
    std::thread trial([](){ return 2;});
    //trial.join()
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

由此我得到以下输出:

terminate called without an active exception
[1]    17963 abort (core dumped)  ./a.out
Run Code Online (Sandbox Code Playgroud)

.join()现在,当我创建线程后调用时,不会发生这种情况。据我所知,.join()等待线程执行结束。然而,它似乎也可以防止中止的发生。有人可以解释一下发生了什么事吗?

c++ multithreading abort c++11

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