Size: a a a

2020 May 04

A

Alex in pro.cxx
И ещё, в MSVC нет, похоже, вовсе никакой синтаксической валидации шаблонов, которые нигде не инстнациированы, а в GCC есть.
источник

Dv

Dr. Friedrich von Ne... in pro.cxx
Ага, всё так, есть такие проблемы. Вроде про второе где-то читал статью, не то хотели починить, не то даже починили под флагом.
источник

A

Alex in pro.cxx
а как эта фича называется, чтоб погуглить?
источник

A

Alex in pro.cxx
Если это можно исправить, это бы мне ну оочень помогло, потому что сейчас приходится писать специальную функцию и напихивать туда всякие инстанциации свежедобавленного кода, просто чтобы убедиться, что в нём нет явных синтаксических ошибок.
источник

ПК

Побитый Кирпич... in pro.cxx
Alex
В некоторых контекстах MSVC считает dependent name именем типа без ключевого слова typename, поэтому можно забыть его написать и не заметить. Висит репорт в баг трекере, но пока что всем пофиг.
Это не баг, а фича. Надо включать two phase компиляцию
источник

OS

Oleksandr Senkovych in pro.cxx
Alex
В некоторых контекстах MSVC считает dependent name именем типа без ключевого слова typename, поэтому можно забыть его написать и не заметить. Висит репорт в баг трекере, но пока что всем пофиг.
По-моему в новых стандартах хотели поубирать все эти template и typename.
источник

A

Alex in pro.cxx
Побитый Кирпич
Это не баг, а фича. Надо включать two phase компиляцию
источник

ПК

Побитый Кирпич... in pro.cxx
Да
источник

ПК

Побитый Кирпич... in pro.cxx
С с++20 typename снова можно не писать будет, но уже официально
источник

A

Alex in pro.cxx
пишут, что вкл по умолчанию уже приличное время, а у меня свежайшая релизная студия и компилятор
источник

A

Alex in pro.cxx
Побитый Кирпич
С с++20 typename снова можно не писать будет, но уже официально
а как это работает? Компилятор будет сам смотреть, что на самом деле представляет указанное имя?
источник

ПК

Побитый Кирпич... in pro.cxx
Alex
а как это работает? Компилятор будет сам смотреть, что на самом деле представляет указанное имя?
Если ты пишешь using = T::type;
то type явно не константа
источник

ПК

Побитый Кирпич... in pro.cxx
Значит и typename не нужон
источник

OS

Oleksandr Senkovych in pro.cxx
а чо там с явным указанием параметров шаблона? До сих пор нужно писать

t->template foo<X>()
источник

ПК

Побитый Кирпич... in pro.cxx
Alex
пишут, что вкл по умолчанию уже приличное время, а у меня свежайшая релизная студия и компилятор
Тут уже не знаю
источник

A

Alex in pro.cxx
Побитый Кирпич
Тут уже не знаю
факт, что не работает. И мне кажется, это другая фича, хоть и смежная.
источник

A

Alex in pro.cxx
Oleksandr Senkovych
а чо там с явным указанием параметров шаблона? До сих пор нужно писать

t->template foo<X>()
В 17 нужно
источник

OS

Oleksandr Senkovych in pro.cxx
Alex
В 17 нужно
а в 20?
источник

A

Alex in pro.cxx
на cppref ничего не сказано про возможные изменения в С++20 https://en.cppreference.com/w/cpp/language/dependent_name#The_template_disambiguator_for_dependent_names
источник

A

Alex in pro.cxx
Про typename написано, а про template нет. Видать, до сих пор не могут заставить компилятор отличить синтаксически валидный шаблон от синтаксически невалидного сравнения. Или могут, но не хотят.
источник