我正在阅读复制和交换.
我尝试阅读Copy Elision上的一些链接,但无法弄清楚它的含义.有人可以解释一下这种优化是什么,特别是下面的文字是什么意思
这不仅仅是为了方便,而且实际上是一种优化.如果参数绑定到左值(另一个非常量对象),则在创建参数时会自动创建对象的副本.但是,当s绑定到rvalue(临时对象,文字)时,通常会省略该副本,从而保存对复制构造函数和析构函数的调用.在赋值运算符的早期版本中,参数被接受为const引用,当引用绑定到右值时,不会发生复制省略.这导致创建和销毁另外的对象.
在boost中是否有可用的模板RAII
.有像这样的类scoped_ptr
,shared_ptr
它基本上用于指针.这些类可以用于除指针之外的任何其他资源.是否有任何模板可以使用一般资源.
例如,在范围的开头获取的某些资源必须以某种方式在范围的末尾发布.获取和发布都需要一些步骤.我们可以编写一个模板,它需要两个(或者一个对象)仿函数来完成这个任务.我还没有想过如何实现这一点,我只是想知道有没有现成的方法来做到这一点
Edit:
如何在C++ 0x中支持lambda函数
执行时:make from vim,make完成后会自动跳转到有错误的文件.有没有办法避免这种情况
编辑
这是我希望实现的用例我想:make执行然后快速列表打开但是我正在处理的当前文件不应该切换到有错误的文件
使用以下默认设置:打开执行快速列表,当前文件也会更改
是否有任何实用程序或插件为C++提供类似cscope的功能.我在寻找
auto_ptr_ref文档在这里 说明了这一点
This is an instrumental class to allow certain conversions that allow auto_ptr objects to be passed to and returned from functions.
有人可以解释一下auto_ptr_ref如何帮助实现这一目标.我只是想了解auto_ptr类及其内部
class X
{
protected:
void protectedFunction() { cout << "I am protected" ; }
};
class Y : public X
{
public:
using X::protectedFunction;
};
int main()
{
Y y1;
y1.protectedFunction();
}
Run Code Online (Sandbox Code Playgroud)
这样我就可以公开基类的一个功能.
我在vim中使用Taglist插件.在taglist窗口中,我可以看到名称空间,类,结构,函数等标签,但不能看到变量.我在Taglist网站上看到了一个截图(附在下面),里面有这个信息.我正在使用Vim 7和Exuberant Ctags 5.8,并且我使用此命令生成了我的ctags
ctags --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++
Run Code Online (Sandbox Code Playgroud)
alt text http://vim-taglist.sourceforge.net/images/taglist_c.gif
我正在编写一段代码,我必须将其从double转换为float值.我正在使用boost :: numeric_cast进行此转换,这将提醒我任何溢出/下溢.但是我也有兴趣知道这种转换是否会导致一些精确损失.
例如
double source = 1988.1012;
float dest = numeric_cast<float>(source);
Run Code Online (Sandbox Code Playgroud)
产生具有价值1988.1的dest
有没有什么方法可以检测到这种精确损失/舍入
c++ floating-point rounding-error rounding floating-accuracy
我面临的问题是我已经映射了一些键和鼠标事件,以便在编辑文件时在 vim 中进行搜索。但是如果quickfix 缓冲区,这些映射会影响功能。
我想知道是否可以根据使用它们的缓冲区来映射键。
EDIT
- 我正在为这个问题添加更多信息让我们考虑一个场景。我想映射<C-F4>
以关闭缓冲区/窗口。现在这种行为可能取决于很多事情。
如果我正在编辑缓冲区,它应该关闭该缓冲区而不更改窗口的布局。我正在为此使用buffkil插件。
它不取决于文件的扩展名,而是取决于缓冲区的类型。我在 vim 文档中看到有未列出和列出的缓冲区。所以如果它被列出缓冲区,它应该使用 bufkill 命令关闭。
如果它不是列出的缓冲区,则应使用<c-w>c
命令关闭缓冲区并更改窗口布局。
我是编写 vim 函数/脚本的新手,有人能帮我开始这个吗
我想用于shift-tab
自动完成和视觉上移动代码块。我一直指的是Make_Shift-Tab_work。该链接讨论了映射^[[Z
到shift-tab
. ^[[Z
但当我按下时我不明白shift-tab
。在这种情况下我只是得到一个正常的tab
。
然后讨论如何使用xmodmap -pke | grep 'Tab'
映射 Tab 键。据此输出应该是
keycode 23 = Tab
or
keycode 23 = Tab ISO_Left_Tab
Run Code Online (Sandbox Code Playgroud)
不过我得到
keycode 22 = Tab KP_Tab
Run Code Online (Sandbox Code Playgroud)
如果我使用xmodmap -e 'keycode 22 = Tab ISO_Left_Tab'
之后xmodmap -pke | grep 'Tab'
,我仍然得到
keycode 22 = Tab KP_Tab
Run Code Online (Sandbox Code Playgroud)
这意味着跑步xmodmap -e 'keycode 22 = Tab ISO_Left_Tab'
没有任何效果。
最后,链接提到使用xev
来查看X
当我按下 时收到的内容shift-tab
。xev
但我的系统上没有。
有没有其他方法可以在vim中捕获shift-tab