在C ++中为使用声明掩盖的类型生成ctags

时间:2018-01-19 23:28:09

标签: c++ templates using ctags

我目前正在开发一个采用大量C ++模板元编程的项目。我有很多类似于以下内容的代码:

template< class T >
struct MakeReferenceImpl{
    using type = T&;
};

template< class T >
using MakeReference = typename MakeReferenceImpl< T >::type;

我经常使用Vim并且发现gCtrl-]对于搜索符号的标签是必不可少的,但是注意到通过using生成的别名类型没有收到自己的标签(至少在默认情况下不是这样)。是否可以使ctags将MakeReference识别为自己的类型?

1 个答案:

答案 0 :(得分:0)

Universal-ctags捕捉得很好。

$ cat /tmp/input.cc 
template< class T >
struct MakeReferenceImpl{
    using type = T&;
};

template< class T >
using MakeReference = typename MakeReferenceImpl< T >::type;
$ ~/var/ctags-github/ctags -o - /tmp/input.cc 
MakeReference   /tmp/input.cc   /^using MakeReference = typename MakeReferenceImpl< T >::type;$/;"  t   typeref:typename:MakeReferenceImpl<T>::type file:
MakeReferenceImpl   /tmp/input.cc   /^struct MakeReferenceImpl{$/;" s   file:
type    /tmp/input.cc   /^    using type = T&;$/;"  t   struct:MakeReferenceImpl    typeref:typename:T &    file: