小编Mal*_*rba的帖子

禁用编译器生成的复制赋值运算符

当我写一个类(比如说class nocopy)时,是否有可能完全阻止复制操作符的存在?如果我没有定义一个,而其他人写的东西就像

nocopy A;
nocopy B;
A = B;
Run Code Online (Sandbox Code Playgroud)

编译器将自动生成一个定义.如果我自己定义一个,我将阻止编译器自动生成,但上面的代码仍然是合法的.

我希望上面的代码是非法的,并生成编译时错误.我怎么做?

c++ copy class

35
推荐指数
2
解决办法
4万
查看次数

从指针访问[]运算符

如果我定义一个指向定义[]运算符的对象的指针,是否有直接的方法从指针访问此运算符?

例如,在下面的代码中,我可以通过使用指针的运算符直接访问Vec的成员函数(例如empty())->,但是如果我想访问[]运算符,我需要先获取对象的引用然后调用运算符.

#include <vector>

int main(int argc, char *argv[])
{
    std::vector<int> Vec(1,1);
    std::vector<int>* VecPtr = &Vec;

if(!VecPtr->empty())      // this is fine
    return (*VecPtr)[0]; // is there some sort of ->[] operator I could use?

return 0;
}
Run Code Online (Sandbox Code Playgroud)

我可能错了,但看起来做(*VecPtr).empty()的效率低于做VecPtr->empty().这就是我寻找替代品的原因(*VecPtr)[].

c++ pointers operators

33
推荐指数
2
解决办法
2万
查看次数

org-mode中的内联PDF图像

emacs+中org-mode,查看组织模式缓冲区时,可以使用该org-toggle-inline-images命令内联链接的图像.这包括开箱即用的各种格式,但显然还没有包含PDF图像.

鉴于emacs完全能够呈现PDF文件,是否可以像使用图像(png,jpeg等)一样制作组织模式内联PDF文件?

一些背景:PDF图像对我来说更方便有几个原因,最大的原因是它们可以很好地适应乳胶,从小纸张到大型海报.

emacs org-mode

17
推荐指数
2
解决办法
5262
查看次数

隐式转换模板参数的规则

如果重载一个函数,然后使用与其中一个重载完全匹配的参数调用它

int f(int){return 3;}
int f(bool){return 4;}
...        //inside main()
f(1);      //Calls f(int)
Run Code Online (Sandbox Code Playgroud)

在尝试任何隐式转换之前,编译器只选择此(完美)匹配.但是我一直在尝试重载函数tempĺate

template <bool veracity>
int f(){return 1;}

template <int amount>
int f(){return 2;}

...        //inside main()
f<1>();
Run Code Online (Sandbox Code Playgroud)

但编译器一直抱怨对重载f()的模糊调用,说明它可能是f<true>()或者f<1>().编译器不应该只选择完美匹配,而不是尝试将1转换为true吗?

我的印象是模板参数的隐式转换实际上比函数参数的隐式转换更具限制性.有办法解决这个问题吗?

c++ templates overloading

12
推荐指数
2
解决办法
1391
查看次数

无需在emacs中查询即可运行TeX-command-master

Emacs/AucTeX中的组合键Cc Cc运行TeX-command-master决定应该运行什么命令的函数(latex,bibtex,view或其他),然后在运行命令之前要求用户进行确认.

我想将它绑定到一个键(比如说F9),除非没有要求确认.这样我只需按F9键即可运行最合适的命令.我怎样才能做到这一点?

emacs auctex

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

在bash中获取git状态的最快方法

有一段时间我一直__git_ps1在我的bash的PS1提示符中使用该函数(with PS1='\w$(__git_ps1)').现在我想根据分支状态对其进行着色.

我写了一个bash函数来检查当前分支是否被修改,并根据状态颜色为红色或白色.问题是它git status用来检查状态(这是我知道的唯一方法),而且比我慢几倍__git_ps1,这足以在我使用提示时引起烦人的延迟(我很弱上网本).

所以我问:有没有更快的方法来检查当前git文件夹的状态? __git_ps1比手动解析快很多git branch,所以我想可能还有一些隐藏的git函数.

git bash

11
推荐指数
3
解决办法
4634
查看次数

Emacs挂钩新框架

每当在Emacs中创建一个新帧时,我都需要一个命令来运行.到目前为止,我一直在使用after-make-frame-functions,但这个钩子只在被创建的帧上调用make-frame.我实际上需要在emacsclient -c命令创建新窗口时运行的东西.

有没有办法实现这一目标?

emacs window

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

将临时对象作为参数传递 - 是复制构造函数吗?

如果a具有包含标准和复制构造函数的类

class Ex{
       //constructor definitions
}
Run Code Online (Sandbox Code Playgroud)

以及将其作为参数的函数(按值)

void F(Ex _exin){...}
Run Code Online (Sandbox Code Playgroud)

采取以下代码:

Ex A;
F(A);   //F's parameter is copy constructed from A
F(Ex());  //F's parameter uses the default constructor
Run Code Online (Sandbox Code Playgroud)

在第三行中,我使用默认构造函数向F传递Ex类的新(临时)对象.我的问题是:在创建这个新对象后,它还复制构造/分配(就像它发生在第二行)或者它是直接创建"内部" F

c++ constructor

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

使用elisp保存"自定义变量"

如果我调出emacs的自定义界面,编辑变量,然后设置+保存它,它的新值将存储(custom-set-variables ...)在我的init文件的列表中.

现在,假设我在elisp中修改了变量的值(使用(setq ...)或其他).

如何使用elisp而不是交互式界面将此新值保存到(custom-set-variables ...)列表中?

emacs customization

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

什么是clojure的特殊形式?

作为改进Cider调试器的一部分,我需要对所有可能的特殊形式实现特殊处理.换句话说,我需要知道满足的所有符号special-symbol?.特殊表格的文档页面虽然有用但并未提供所有这些内容.

例如,经过一些实验,我已经了解到了这一点

  1. 大多数的形式列在那里有一个*对应物(let*loop*,例如).
  2. 有一个clojure.core/import*特殊符号(如果不是为了纯粹的运气,我就不会发现).

是否有所有特殊符号的完整列表?
或者,有没有办法列出所有实习符号?如果是这样,那么我可以过滤掉special-symbol?.

symbols clojure

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