Просто для того, чтобы указать одну из причин, почему это ограничение (по крайней мере в текущем стандарте).
При сопоставлении специализированных шаблонов компилятор сопоставляет аргументы шаблона, в том числе аргументы не-типа.
По самой своей природе значения с плавающей запятой не являются точными, и их реализация не указана стандартом C ++. В результате трудно решить, когда два аргумента non-типа с плавающей запятой действительно соответствуют:
template <float f> void foo () ;
void bar () {
foo< (1.0/3.0) > ();
foo< (7.0/21.0) > ();
}
Эти выражения не обязательно приводят к одному и тому же «битовому шаблону», и поэтому было бы невозможно гарантировать что они использовали ту же специализацию - без специальной формулировки, чтобы покрыть это.
решаемые. Это было имя пользователя по умолчанию, состоящее из нелатинских символов, портящих диспетчер узлов. Проверяется только с помощью команды whoami, чтобы узнать, что имя пользователя по умолчанию было «???????»