увеличить возможность подсчета Intellisense VS при доступе к параметру шаблона - PullRequest
0 голосов
/ 19 февраля 2019

Я хочу получить доступ к параметру шаблона.Этот код работает : -

template<int s1,int s2> class Setting{public:
    static const int setting1=s1;
    static const int setting2=s2;
};
class Album{
    public: using Setting_unique  =Setting<1,2>    ;
    public: using Setting_share   =Setting<4,7>    ;
};
template<class Setting_X> class SmartPtr{
    public: void doSomething(){
        if constexpr(Setting_X::setting1==1){
            //                  ^ intellisense sad :(
        }
    }
};
int main(){ SmartPtr<Album::Setting_unique> a; }

^ Тем не менее, intellisense это не устраивает.
Я не могу сделать ctrl+space.

Ниже мой трюк, чтобы заставить Intellisense работать снова.Это также работает : -

class Helper{public:  // **new class**
    int setting1=0;
    int setting2=0;
    public: constexpr Helper(int setting1P,int setting2P)
        : setting1(setting1P), setting2(setting2P){ }
};
template<int s1,int s2> class Setting{
    // **new function**
    public: static constexpr Helper getHelper(){return Helper(s1,s2);}
};
class Album{
    public: using Setting_unique  =Setting<1,2>    ;
    public: using Setting_share   =Setting<4,7>    ;
};
template<class Setting_X> class SmartPtr{
    static constexpr Helper setting = Setting_X::getHelper();
    public: void doSomething(){
        if constexpr(setting.setting1==1){
            //               ^ intellisense happy :) -
            //      It shows "setting1" & "setting2" in a drop-down list.
        }
    }
};
int main(){SmartPtr<Album::Setting_unique> a; }

Вот список, который я хочу: -

enter image description here

Проблема в : мой код становится все труднее реорганизовать и сделать грязнее.
Если я могу добавить новый s3 в будущем, есть больше мест для кодов, ожидающих редактирования.

Как сделать интеллигент счастливым, сохраняя при этом уровень ремонтопригодности?

Я использую Visual Studio 2017 + Resharper .
(необязательно) Однако было бы здорово, если решение не 'Это зависит от Resharper или может быть применено к большинству IDE.

Извините, если этот вопрос может показаться тривиальным, но ctrl+space - это моя жизнь.

...