В то время как это корректно, что не нужно обычно добавлять материал к станд.:: пространство имен, добавление шаблонных специализаций для пользовательских типов конкретно позволяется. Перегрузка функций не. Это - тонкое различие:-)
17.4.3.1/1, Это не определено для программы C++ для добавления объявлений или определений станд. пространства имен или пространствам имен со станд. пространства имен, если иначе не определено. Программа может добавить шаблонные специализации для любого стандартного шаблона библиотеки к станд. пространства имен. Такая специализация (завершенный или неравнодушный) стандартной библиотеки приводит к неопределенному поведению, если объявление не зависит от пользовательского названия внешней связи и если шаблонная специализация не отвечает стандартным требованиям библиотеки для исходного шаблона.
специализация А станд.:: подкачка была бы похожа:
namespace std
{
template<>
void swap(myspace::mytype& a, myspace::mytype& b) { ... }
}
Без template<> бит это была бы перегрузка, которая не определена, а не специализация, которая разрешена. @Wilka предполагает, что подход изменения пространства имен по умолчанию может работать с пользовательским кодом (из-за поиска Koenig, предпочитая версию пространства имен меньше), но этому не гарантируют, и на самом деле действительно не предполагают к (реализация STL должна использовать полностью определенный станд.:: подкачка).
существует поток на comp.lang.c ++. модерируемый с длинный обсуждение темы. Большая часть из него о частичной специализации, хотя (который в настоящее время нет никакого хорошего способа сделать).
Самый простой способ - использовать вывод команды system_profiler . Он также имеет параметр -xml
, чтобы упростить автоматический синтаксический анализ вывода.
Базовый API, который, как мне кажется, использует System Profiler (по крайней мере, для части собираемой информации), и который вы должны использовать, если хотите очень конкретную информацию, это sysctl . Он позволяет запрашивать отдельные атрибуты системы, включая количество процессоров, скорость процессора, доступную оперативную память и т. Д.
Для начала вам достаточно следующей ссылки:
Обновленная ссылка: Wayback Machine: Как получить конфигурацию оборудования и сети
Вы можете использовать мост сценариев в Leopard (или новее), чтобы получить нужную информацию непосредственно из Apple System Profiler.