小编Cyb*_*Luc的帖子

'const decltype((a))'不声明const引用?

今天我看到了一些这样的代码:

int a = 0;
const decltype((a)) x = 10; // Error

const int b = 0;
decltype ((b)) y = 42; // Correct
Run Code Online (Sandbox Code Playgroud)

我可以看到为什么正确的代码是正确的,但我不明白为什么错误的代码不正确.

我测试了它,发现它有点奇怪.

const decltype((a)) x = 10;这应该是一个const int&权利?但它不编译!error: non-const lvalue reference to type 'int' cannot bind to a temporary of type 'int'.

我把它改成了const decltype((a)) x = a;然后编译.

那么,是x一个const参考?不,我发现它是一个非const引用.我可以修改它a的价值x.

为什么const修饰符不起作用?

c++ decltype c++11

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

定义我自己的函数时如何设置完成

我写了一个函数在"EMACS"中插入一些特殊字符,它将要求输入名称并插入相应的特殊字符.

示例:当我键入"alpha"时,将插入该函数?.

但是当我输入这些字符时,我发现我无法使用自动完成功能.我将alpha as ?和beta 定义为?,但是当我输入al[Tab]它时只需插入一个标签.

如何为我的功能定义自动完成功能?

- 编辑 - - - - - - - - - - - - - - - -

对不起,我还是emacs的新手,昨天刚开始写elisp函数.

我只是使用一种直接的方式来实现这个功能,使用interactive代码s来读取字符串

这就是我想知道如何完成自动完成的原因.因为我没有找到关于此类事情的任何教程.也许是因为我缺乏elisp知识才能找到正确的答案.

无论如何,这是我的代码:

(defun sp-char (char)
"Insert some special chars."
(interactive "sInput char name: ")
(let ((funky-char))
    (setq funky-char
      (cond
       ((string= char "Alpha" ) "?")
       ((string= char "alpha" ) "?")
       ((string= char "Beta" ) "?")
       ((string= char "beta" ) "?")
       ((string= …
Run Code Online (Sandbox Code Playgroud)

emacs elisp function

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

C++ 使用 new 创建带有初始化程序的对象数组

我写了一个类,像这样(仅用于演示):

class cls{
public:
    cls(int a):value(a){}
private:
    int value;
};
Run Code Online (Sandbox Code Playgroud)

我想动态创建一个数组,每个元素初始化为一个特定的值,如 2:

cls *arr = new cls[N](2);
Run Code Online (Sandbox Code Playgroud)

但是 g++ 报告了“错误:数组 new 中的括号初始化器”。

我在互联网上搜索,但只找到了类似int and等基本类型的类似问题double,答案是 NO WAY。

假设类必须被初始化,如何解决问题?我必须放弃构造函数吗?

c++ arrays initialization

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

标签 统计

c++ ×2

arrays ×1

c++11 ×1

decltype ×1

elisp ×1

emacs ×1

function ×1

initialization ×1