Должен ли IntelliSense жаловаться на переменные шаблона?

#c #visual-c #c 14 #intellisense

#c #visual-c #c 14 #intellisense

Вопрос:

Я опробовал переменные шаблона в VC (на данный момент установлены все последние обновления) и все скомпилировано и работает (в нем говорится, что item это не используется, ну, вполне законное предупреждение на уровне 4)! Единственная плохая вещь заключается в том, что IntelliSense жалуется на переменные шаблона.

Рассмотрим этот код:

 #include <iostream>
#include <iomanip>

struct Whatever
{};

struct Bottle
{};

template <typename T>
constexpr bool is_bottle = false;

template <>
constexpr bool is_bottle<Bottle> = true;

template <typename Item>
void use(Item item)
{
    std::cout << std::boolalpha;
    std::cout << is_bottle <Item> << 'n';
}

int main()
{
    use(Whatever{});
    use(Bottle{});
}
  

Для специализации Bottle IntelliSense жалуется, что

Явная специализация переменной шаблона должна предшествовать ее первому использованию ()

(у него тоже есть скобки).

Вопрос: все ли должно быть так, как есть? Я имею в виду, что переменные шаблона работают, а Intellisense жалуется на них.

Комментарии:

1. Помощник компилятора с ошибками не является хорошей заменой знанию и пониманию C .

2. @SamVarshavchik, я знаю, но я просто хотел проверить, не происходит ли волшебных вещей, и я без сна, как 20 часов.

3. Это не компилируется в Visual Studio, вы получаете ошибки компилятора. IntelliSense дает вам только подсказки, это другое.

4. @BarmakShemirani, у меня все скомпилировано и работает правильно, как было упомянуто в начале.

5. @Olzhas извините, я ошибся, он компилируется, но вы получаете предупреждения компилятора