Что значит С++17 в вакансиях? Зачем это пишут?
================================================

 Часто вижу в вакансиях пишут "используем стандарт С++хх". Поясните, зачем это делают? Я знаю, что это номер стандарта. Как понять подхожу ли я под эти критерии? Например в 17 стандарте появились string\_view. Если я использую string\_view, то я использую такой стандарт? Есть ли вообще в этом какой-либо глубокий смысл или это скорее доп. информации о компании?  

  

Как я представляю, что стандарт означает использование некоторых новых для него фич. Но если я использую стандарт меньший, чем грозит что фирма использует более новый? Если я встречу незнакомый синтаксис я посмотрю его на cppreferenece. Стоит ли вообще обращать на это внимание или скорее воспринимать это как набор тэгов, ключевых слов? 

 В вакансиях много чего пишут и нередко мало понимают что пишут. Номер стандарта сегодня является некоторым атрибутом хайпа, которым очередная нерадивая компания буквально обязана блеснуть ради привлечения увлеченного энтузиаста к круглогодичному ковырянию своего легаси на C98 вперемешку с шаблончиками из C++03.  

Хотя, безусловно, есть и высококлассные коллективы с передовыми знаниями и актуальными стандартами качества, где работать - сплошная мечта.  

  

Между тем, понимание конкретного стандарта языка означает не только знание этого стандарта, но и знание всех стандартов до него, и понимание различий между ними всеми. А так же - понимание цены перехода в коде от более старого стандарта к более новому.  

Понимание C++17, прежде всего, означает понимание цены перехода с C++14 в коде с `auto` и инициализацией списками, понимание цены отказа от `std::tie` в пользу структурного связывания (не говоря уже о понимании семантики структурного связывания) и понимание рациональности перехода на структурное связывание в конкретном месте кода, понимание последствий использования автоматического выведения аргументов шаблона типа в месте вызова конструктора и возможные последствия применения этого подхода в конкретном участке кода, понимание семантики работы с `this` в замыкании лямбды и отличия этого поведения в более старых стандартах. И так далее. 

> в вакансиях пишут "используем стандарт С++хх". Поясните, зачем это делают?

  

Для привлечения разработчиков, которым тошно поддерживать код, написанный до C++0x ;) 

 Когда такое указывают, то ожидают, что разработчик будет рефлекторно писать сразу код 17-го стандарта, без заглядывания на cppreferenece. 

 Если вы используете стандарт меньше чем C++17, а код написан на C++17, начинается потеря единообразия в коде, что влечет за собой в далекой перспективе убытки, потому что код становится дороже поддерживать.  

  

Например, в фирме положено писать код так, что функция возвращает std::optional<>. Если произошла ошибка, нужно вернуть пустое значение, если все хорошо - заполненное.  

  

Вы же начнете например возвращать bool, а результат выдавать через указатель (переданный в качестве параметра). Потом кто-то решит, что результат ему не нужен и пихнет туда nullptr, а вы это дело у себя не учли (соглашения-то писать вот так в компании нет) - и вот уже баг на ровном месте, недовольные клиенты, ночной рефакторинг и прочие прелести.