一个关于 private member function detect 的 SFINAE 模板

问题的开始

问题的最初的样子

曙光

最后的方案

问题的开始

问题起源于,我要搞一个模板,来检查一个类,是不是有一个特定的回调接口 OnAlarm()。我显然希望在我的模板类里面,直接调用这个 OnAlarm 回调的。但是问题,就这么出现了。我需要一个模板,来检查一个传给构造函数的指针指向的类型,是不是有我需要的 OnAlarm 方法。如果没有的话,我需要使用另一套回调的机制。

问题就出在了这个检查上面。

问题的最初的样子

最开始的时候,我是写成了这个样子的。

template <typename T, typename = void>

struct ......

User-defined conversion and Copy elision

问题的开始

最初的讨论和思考

关于隐式转换(implicit conversion)

关于复制消除(copy elision)

问题的开始

问题的开始是同事聊到了我们笔试题的一个问题,是说下面这个代码其实在编译的时候是有问题的。

struct UserInfo {

UserInfo(const std::string& name) : name_(name) {}

private:

std::string name_;

};

int main() {

UserInfo u = "name";

}

最初的讨论和思考

显然在最开始的......

VIM and Latex

起源

起源是在群里看到了有人分享的关于一个人用 vim 写 latex 的文章,但是它的做法是用了一个 vimtex 的独立插件。

我是个 language server 的狂热使用者,所以我就在找一个用 language server 的处理方案。回忆起来另一次在另一个群里看到的,一个叫做 texlab 的项目,就在 vim 里搞个配合。

vim 里的插件选择

vim 里的 language client 的实现用好几种:

vim-lsp

coc.nvim

LanguageClient-neovim

用来用去还是 coc.nvim 在这里面不论是流畅度还是 fe......