strlen это часть стандартной библиотеки языка C
уговорил
![Smile :) :)](/talk/styles/default/xenforo/smilies/smile.png)
пусть будет std::strlen() - функция стандартной библиотеки языка C++, часть языка, по-твоему получается что нет, т.к. можно тот же самый функционал написать самому.
Пример из php некорректен, потому что в C++ char* - это не строка, это указатель на char, ты можешь в пхп точно также назвать строкой массив из символов с нулем на конце, и спокойно написать цикл, который по нему пройдется этот нолик найдет. В C++ строка - это как раз std::string, а не char*. Также есть мнение, что понятие "строка" - вообще строго не определено в контексте C++ и каждый выдумывает сам.
Непрактично считать частью языка только его синтаксис и семантику, поэтому "окружение" и "стандартную" библиотеку впихивают в описание языка, в стандарт в данном случае, это какбе удобно. Если какой-то умный человек решает сделать "C++ implementation", которая не содержит standard library, то эта реализация просто неполна.
В C++ используются аналоги malloc/free которые new/delete (это не функции - это конструкция языка C++ такая же как if/else etc).
вот эта "конструкция языка" может быть переопределена как глобально так и для определенных типов, т.е. можно сделать свою и многие делают, удивительно, но это же противоречит тому определению, что ты дал выше.
Факт - это то что есть в реальности, а не чьи-то взгляды.
Во, факт в том, что есть стандарт, который описывает язык C++, часть этого стандарта посвящена описанию standard library (заметь, нет слова template там никакого).
И еще факт в том, что у тебя есть мнение и согласно этому мнению, библиотека частью языка не является.
Вывод?
Кстати, я тут почитать стандарт собсна решил на эту тему
![Smile :) :)](/talk/styles/default/xenforo/smilies/smile.png)
и там написано, что может быть два вида реализаций
hosted: есть все, что описано в стандарте, предполагается, что программа будет исполняться внутри некоей operating system.
freestanding: когда ос может не быть, но реализация все равно обязана предоставить некий минимальный набор заголовокв и функций (ну и перечислены они, с десяток наверное).