Обращение к сторонним библиотекам — нормальная практика.
Если обращение к сторонним библиотекам требуется для функционала, который должен быть «из коробки» — это ненормальная практика.
Вот поэтому у нас на работе уже не первого электрика калечит... Ведь именно они лезут во внутрь.
Нарушение правила №1 техники безопасности: «не знаешь — не лезь!».
Но это — «к слову». А смысловая параллель хреновенькая. Шаблоны не должны «калечить», если идёт разработка с их использованием. Если они «калечат», значит плохо спроектированы/реализованы. О чём я собственно и веду речь.
А пользоваться тем, что есть по правилам можно и не зная шаблонов.
Можно. Но это поощряет monkey-код. Что есть не хорошо.
Во-первых, стандарты были начиная с 1998 года.
угу, в котором сразу же были шаблоны.
Угу, только после выхода стандарта в 98-ом активно шаблонами не пользовались лет 10. Да, что-то использовалось внутри STL. Что-то использовалось в связке с STL. Но не более.
Потом начали появляться библиотеки типа Boost.
А потом в стандарт (который регламентирует и STL) ввели большую группу классов/функций в <algorithm> и связанные с ним заголовки. И оказалось, что без знания шаблонов осмысленно писать код стало практически невозможным. Т.е. либо используй «C с классами», либо учи шаблоны.
Причем здесь 20 лет и софт — не ясно.
Поясняю: 90% этого софта написано именно на «C с классами».
Мартын
Можно я опять с вопросом?
Если раздельную компиляцию с применением шаблонов делать нельзя и весь шаблонный код должен быть в заголовочном файле, то из этого следует, что невозможно определить статическую функцию. Это так?
Т.е. я имею ввиду, что если писать код в обычном процедурном стиле, то вспомогательные функции, не предназначенные для непосредственного вызова из импортирующего кода, «закрыть» нельзя? Или все-таки как-то можно?
Если обращение к сторонним библиотекам требуется для функционала, который должен быть «из коробки» — это ненормальная практика.
ВСЕГО из коробки быть не может.
Шаблоны не должны «калечить», если идёт разработка с их использованием.
А вот шаблоны здесь как раз не причем.
Здесь есть тоже правило — не знаешь, может покалечить.
Ведь если Вы не знаете чего-то, то будете по граблям ходить.
И это касается не только электричества и шаблонов.
Угу, только после выхода стандарта в 98-ом активно шаблонами не пользовались лет 10
Большей частью потому, что VS 6.0 их не поддерживал. )))
И сейчас мы имеем похожее.
C++11 и 14 еще не всеми поддерживается,
а на носу уже 2017 год и C++17.
Да и 14-ый еще, наверное, никто полностью не поддерживает.
Хотя и заявлена полная поддержка.
Но не более.
Это Вам так кажется. Писать всё с нуля не имеет смысла.
У компаний, занимающихся разработкой есть набор либо сторонних,
либо собственных библиотек. С нуля работают только новички.
что без знания шаблонов
т.е. без знания львиной части языка.
Поясняю: 90% этого софта написано именно на «C с классами»
И как это относится к нечистоте C++? )
Оно писалось когда еще компиляторов не было с нужным функционалом,
либо был запрет на использование шаблонов.
Вы можете не использовать шаблоны, исключения и т.д.
Это часто практикуется.
т.е. если Вы не знаете шаблонов, то не используйте их.
Никто Вам не запрещает.
невозможно определить статическую функцию
Если она не шаблонная, то можно.
Если шаблонная и заранее известно
с какими типами она работает,
то явно инстанцировать в .cpp можно.
Ну а в ином случае не закроете.
Но учтите, шаблоны не панацея.
Если можно сделать просто без шаблона,
то лучше так и сделать.
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.
Если обращение к сторонним библиотекам требуется для функционала, который должен быть «из коробки» — это ненормальная практика.
Нарушение правила №1 техники безопасности: «не знаешь — не лезь!».
Но это — «к слову». А смысловая параллель хреновенькая. Шаблоны не должны «калечить», если идёт разработка с их использованием. Если они «калечат», значит плохо спроектированы/реализованы. О чём я собственно и веду речь.
Можно. Но это поощряет monkey-код. Что есть не хорошо.
Угу, только после выхода стандарта в 98-ом активно шаблонами не пользовались лет 10. Да, что-то использовалось внутри STL. Что-то использовалось в связке с STL. Но не более.
Потом начали появляться библиотеки типа Boost.
А потом в стандарт (который регламентирует и STL) ввели большую группу классов/функций в
<algorithm>
и связанные с ним заголовки. И оказалось, что без знания шаблонов осмысленно писать код стало практически невозможным. Т.е. либо используй «C с классами», либо учи шаблоны.Поясняю: 90% этого софта написано именно на «C с классами».
Можно я опять с вопросом?
Если раздельную компиляцию с применением шаблонов делать нельзя и весь шаблонный код должен быть в заголовочном файле, то из этого следует, что невозможно определить статическую функцию. Это так?
Т.е. я имею ввиду, что если писать код в обычном процедурном стиле, то вспомогательные функции, не предназначенные для непосредственного вызова из импортирующего кода, «закрыть» нельзя? Или все-таки как-то можно?
ВСЕГО из коробки быть не может.
А вот шаблоны здесь как раз не причем.
Здесь есть тоже правило — не знаешь, может покалечить.
Ведь если Вы не знаете чего-то, то будете по граблям ходить.
И это касается не только электричества и шаблонов.
Большей частью потому, что VS 6.0 их не поддерживал. )))
И сейчас мы имеем похожее.
C++11 и 14 еще не всеми поддерживается,
а на носу уже 2017 год и C++17.
Да и 14-ый еще, наверное, никто полностью не поддерживает.
Хотя и заявлена полная поддержка.
Это Вам так кажется. Писать всё с нуля не имеет смысла.
У компаний, занимающихся разработкой есть набор либо сторонних,
либо собственных библиотек. С нуля работают только новички.
т.е. без знания львиной части языка.
И как это относится к нечистоте C++? )
Оно писалось когда еще компиляторов не было с нужным функционалом,
либо был запрет на использование шаблонов.
Вы можете не использовать шаблоны, исключения и т.д.
Это часто практикуется.
т.е. если Вы не знаете шаблонов, то не используйте их.
Никто Вам не запрещает.
Если она не шаблонная, то можно.
Если шаблонная и заранее известно
с какими типами она работает,
то явно инстанцировать в .cpp можно.
Ну а в ином случае не закроете.
Но учтите, шаблоны не панацея.
Если можно сделать просто без шаблона,
то лучше так и сделать.