小编Dom*_*tos的帖子

Vim:如何从搜索中排除整个单词?

非常基本的问题,我正在尝试在Vim中编写一个正则表达式来匹配任何短语,"abc "然后直接跟着除了之外的任何其他短语"defg".

我习惯于"[^defg]"匹配除d,e,f或g之外的任何单个字符.

我的第一直觉是尝试/abc [^\(defg\)]或者/abc [^\<defg\>]两者都没有.

regex vim

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

C++模板参数类型推导

给定模板化函数,如下所示:

template<class T>
int Function(T object);
Run Code Online (Sandbox Code Playgroud)

用户可以通过指定模板化类型来调用此函数,如下所示:

int result = Function<float>(100.f); // Valid
Run Code Online (Sandbox Code Playgroud)

但是类型规范是可选的,因为编译器可以从提供的参数的类型推导出T的类型; 像这样:

int result = Function(100.f); // Also valid, the compiler deduced the type "float" from the literal's type
Run Code Online (Sandbox Code Playgroud)

假设我有点复杂,我想要一个这样的模板化值参数:

template<class T, T* object>
int Function();
Run Code Online (Sandbox Code Playgroud)

我可以这样调用我的函数:

static float val = 100.f;
// ...
int result = Function<float, &val>();
Run Code Online (Sandbox Code Playgroud)

我的问题是:有没有办法我强迫编译器根据参数类型和val来推断类型T?

我需要的是一种使以下代码有效的方法:

static float val = 100.f;
// ...
int result = Function<&val>();
Run Code Online (Sandbox Code Playgroud)

可以吗?

c++ templates c++11

10
推荐指数
2
解决办法
7089
查看次数

Vim自动命令:写一个只读文件?

我在Windows上使用Perforce和Vim.我目前有一个自动命令设置为在更改时打开只读文件进行编辑:

au FileChangedRO * !p4 edit <afile>
Run Code Online (Sandbox Code Playgroud)

p4 edit在尝试编写 只读文件而不是编辑它时,有没有办法设置类似的auto命令来执行?

vim perforce

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

如何为std :: unique_ptr创建有效的C ++别名模板

我想为此提供一个别名模板,std::unique_ptr以提供自己的删除功能。

unique_ptr 具有标量和数组实现,它们的定义如下:

template <class T, class D = default_delete<T>>
class unique_ptr // scalar

template <class T, class D>
class unique_ptr<T[], D> // array
Run Code Online (Sandbox Code Playgroud)

我在尝试覆盖的标量和数组版本时遇到麻烦unique_ptr。为一个版本创建别名很容易,如下所示:

template<class T>
struct Deleter {
    void operator()(T* ptr) { delete ptr; }
};

template<class T>
using my_unique_ptr = std::unique_ptr<T Deleter<T>>;
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试添加第二个别名时,如下所示:

template<class T>
struct ArrayDeleter {
    void operator()(T* ptr) { delete [] ptr; }
};
template<class T>
using my_unique_ptr = std::unique_ptr<T[], ArrayDeleter<T>>;
Run Code Online (Sandbox Code Playgroud)

...由于“ my_unique_ptr”含糊不清,我最终遇到编译器错误。

我的问题是:如何创建一个既适用于数组又适用于标量版本的别名unique_ptr

c++ arrays templates unique-ptr c++11

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

标签 统计

c++ ×2

c++11 ×2

templates ×2

vim ×2

arrays ×1

perforce ×1

regex ×1

unique-ptr ×1