#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 извините, я ошибся, он компилируется, но вы получаете предупреждения компилятора