Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Новый стандарт C++. C++09, Что нас ожидает... 
:(
    Опции темы
archimed7592
Дата 14.6.2007, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(bsa @  14.6.2007,  00:01 Найти цитируемый пост)
Выравнивание - это фактическое место в памяти (расстояние между соседними объектами в байтах)?

Цитата(bsa @  14.6.2007,  00:01 Найти цитируемый пост)
Но тогда возникает другой вопрос, а зачем надо было "обрезать" кусок данных?

Это число N. Численное представление адреса в памяти объекта типа T должно быть кратно этому числу N. Мы можем запросить как меньшее, так и большее выравнивание.


Цитата(bsa @  14.6.2007,  00:01 Найти цитируемый пост)
Или все это нужно лишь для гарантированного размещения байта (например) в структуре без указания всяких __attribute__(pack) (или как оно)?
Ага.


Цитата(bsa @  14.6.2007,  00:01 Найти цитируемый пост)
Но тогда не понимаю, причем тут аппаратное исключение?

Цитата(bsa @  14.6.2007,  00:01 Найти цитируемый пост)
Но тогда опять не совсем понятно, а причем тут исключение?

На некоторых платформах можно огрести Bus error/SIGBUS/SIGSEGV/etc в случае, если попытаться считать данные по невыровненному адресу.
Опять же, на некоторых системах это равносильно AV.
К примеру, RISC процессоры этим "страдают".
У x86 такое ограничение, ЕМНИП, только на атомарные операции(lock префикс перед операцией). Дело в том, что считывание 4-х байт по адресу некратному 4-м - операция, сбивающая процессор(любой) с толку. Просто x86 делает это очень медленно, а некоторые этого делать просто неумеют(и слава Б-гу) и генерируют аппаратное исключение(точно такое же прерывание, просто с предопределённым для него номером). Исключений, к примеру, генерируются ещё в случаях, когда процесс обращается к памяти, которая в свопе(page fault), но их обрабатывает ОС.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
bsa
Дата 14.6.2007, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Так. Хорошо.
Допустим мы имеем тот самый RISC с кратностью 4. Тогда, чему равны alignof(char), alignof(short), alignof(int)? Думаю, что 4. В таком случае операция:
Код
char alignas(char) alignas(char) var;
 должна разместить var в 4-х байтах. Тогда какой толк от этого всего? Или предполагается, что я должен буду явно указывать допустимую для архитектуры размерность?
PM   Вверх
archimed7592
Дата 19.6.2007, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



bsa, у char на любых платформах выравнивание 1.

Цитата(bsa @  14.6.2007,  00:36 Найти цитируемый пост)
char alignas(char) alignas(char) var;

Не пойму, зачем так писать? То же самое, что написать
Код

char var;


Добавлено через 3 минуты и 29 секунд
Народ, если кому интересно, то вот продолжения обзора:
Стандартная библиотека C++09
Чего НЕ будет в С++09
TR1. Technical Report on C++ Library Extensions

Сюда это копипастить проблематично из-за ограничений форума на максимальную длину сообщения.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
bsa
Дата 19.6.2007, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Цитата(archimed7592 @ 19.6.2007,  19:29)
bsa, у char на любых платформах выравнивание 1.

Цитата(bsa @  14.6.2007,  00:36 Найти цитируемый пост)
char alignas(char) alignas(char) var;

Не пойму, зачем так писать? То же самое, что написать
Код

char var;


Вот именно. Тогда какой смысл в это alignof/alignas? Если можно дай пример, в котором это отображается.

Это сообщение отредактировал(а) bsa - 19.6.2007, 21:45
PM   Вверх
MAKCim
Дата 19.6.2007, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата(archimed7592 @  14.6.2007,  00:16 Найти цитируемый пост)
У x86 такое ограничение, ЕМНИП, только на атомарные операции(lock префикс перед операцией).

При чем тут lock? Генерация #AC включается установкой AM в CR0 и AC в EFLAGS

Добавлено @ 22:37
Цитата(bsa @  19.6.2007,  21:45 Найти цитируемый пост)
Тогда какой смысл в это alignof/alignas? Если можно дай пример, в котором это отображается.

наверное так
Код

int alignas(int) alignas(long) a;

хотя тут можно было написать просто long a

Это сообщение отредактировал(а) MAKCim - 19.6.2007, 22:46


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
archimed7592
Дата 19.6.2007, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(MAKCim @  19.6.2007,  22:24 Найти цитируемый пост)
При чем тут lock? Генерация #AC включается установкой AM в CR0 и AC в EFLAGS

Я давно от низкоуровнего программирования отошёл... спасибо за поправку.


Цитата(MAKCim @  19.6.2007,  22:24 Найти цитируемый пост)
наверное так
Выделить всёкод C++
1:
    
int alignas(int) alignas(long) a;

хотя тут можно было написать просто long a

Точно не знаю, но вполне возможно, что по стандарту не будет противоречить случай alignof(int) > alignof(long). Это во-первых.

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


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
MAKCim
Дата 20.6.2007, 08:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата(archimed7592 @  19.6.2007,  23:49 Найти цитируемый пост)
Точно не знаю, но вполне возможно, что по стандарту не будет противоречить случай alignof(int) > alignof(long). Это во-первых.

хм, это будет по меньшей мере странно
сомневаюсь вообщем
Цитата(archimed7592 @  19.6.2007,  23:49 Найти цитируемый пост)
Во-вторых, намного больше применения будет наверное в шаблонном коде, где ты не знаешь заранее что за тип тебе подсунули. 

не знаю, мне кажется, что С++ слишком высокоуровневый, чтобы вводить в стандарт такие вещи как выравнивание, другое дело С

Добавлено через 5 минут
archimed7592
кстати, typeof() будет в новом стандарте?


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
bsa
Дата 20.6.2007, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Цитата(MAKCim @ 20.6.2007,  08:45)
archimed7592
кстати, typeof() будет в новом стандарте?

только по  другому называться будет.
Цитата
// ещё, появилась штука, ожидаемая под названием typeof.
// в C++09 её назвали decltype
decltype(container.begin()) i = container.begin();

PM   Вверх
Любитель
Дата 24.6.2007, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Во-первых, большое спасибо archimed7592 за качественную работу по переработке материала и отличный обзор smile 

Цитата(archimed7592 @  12.6.2007,  14:06 Найти цитируемый пост)
Обсуждение упомянутых фич, а также, изложение информации о неупомянутых фичах очень даже приветствуется

Ну - как скажите smile Выскажу своё отношение ко всему этому делу.

Цитата(archimed7592 @  12.6.2007,  13:53 Найти цитируемый пост)
Variadic templates

В связи с этим хотелось бы ещё и нормальные тиипобезопасные переменные параметры функций. Поюсню примерный синтаксис и реализацию.
Код

// Объявление
void f(MyClass* ... objects)


Фактически, objects - какой-нибудь STL-контейнер: container_template<MyClass*>. Можем опционально задать container_template (в том числе и свой):
Код

void f(MyClass* ...<std::list> objects)


По умолчанию используется, например, std::vector.

При каждом конкретном вызове компилер генерит один из двух кодов:
Код

// Последовательные контейнеры
container_template<arg_type> temp_container;
temp_container.push_back(arg1);
temp_container.push_back(arg2);
// ...
function(temp_container);

// Ассоциативные контейнеры
container_template<arg_type> temp_container;
temp_container.insert(arg1);
temp_container.insert(arg2);
// ...
function(temp_container);


Тип контейнера определяем с помощью концепций (если формально удовлетворяет в обе ктаегории - то пожалуй, отнесём к первой).

Неплохо также разрешить такой код:
Код

void f(my_class& ... objects)

При этом будет использоваться некоторый стандартный шаблон-обёртка над контейнером, с фактическим хранением указателей, и разыменованиями в нужных местах (front, back, operator [], at, итераторы).

Сам контейнер передаётся, конечно, (в любом случае) по константной ссылке.


Цитата(archimed7592 @  12.6.2007,  14:06 Найти цитируемый пост)
 Также, возможность выполнения атомарных операций

Хотелось бы по конкретней узнать: будут ли специальные языковые конструкции для синхронизации (типа блок операций, выполняемых одновременно лишь в одном потоке)? Очень хотелось бы.


Цитата(archimed7592 @  12.6.2007,  14:06 Найти цитируемый пост)
Strongly Typed Enums

Судя по приведённому коду, гляжу и явное включение значений енумов в текущий контекст убрали (что, безусловно, хорошо). Однако, логично было бы ещё что-то типа:
Код

using MyEnum::Val1;
using enum MyEnum;



Ещё что-то не заметил упоминания про final/sealed (как для классов, так и для методов). Тоже, нужная вещь.


<чуть позже допишу ещё>


--------------------
PM MAIL ICQ Skype   Вверх
Любитель
Дата 24.6.2007, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Ничего не заметил ещё про столь обещаемые #push, #pop - для регулирования области видимости макросов.


Ещё - когда же мы получим инклюд без препроцессора?! Чтобы нормально разруливался дабл-инклюд (без лишних макросов + директив или же тем более компилерозависимых прагм). Чтобы после хейдера, в которым кто-то забыл закрывающую фигурную скобку поставить мы не видели непонятные ошибки в каждом третьем исходнике. И пр.

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

Встаёт проблема с порядком компиляции (или как сие назвать) заголовков. Лучшем решением (не единственным, впрочем) вижу всё-таки введения понятия сборки/проекта/etc.. Встроенная минимал билд-система в некотором роде. Но в разумном виде. Можно проще поступить - задать конкретное правило полчения имени бинари-заголовка из обычного. Но это отдельно подумать надо...

Необходимость понятия сборки - также из-за желания иметь аналог internal из шарпа. Плюс его же применять к нэймспейсам (+классам, енумам и пр., хотя это не так нужно - но для симетрии).

Ещё интересно было бы увидеть (но не так, чтоб прям сильно) ООП-шные енумы, так сказать. Типо енумов в Яве или вэриантов в Немерле.

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


--------------------
PM MAIL ICQ Skype   Вверх
JackYF
Дата 24.6.2007, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(Любитель @  24.6.2007,  10:36 Найти цитируемый пост)
связи с этим хотелось бы ещё и нормальные тиипобезопасные переменные параметры функций. Поюсню примерный синтаксис и реализацию.
Выделить всёкод C++
1:
2:
    
// Объявление
void f(MyClass* ... objects)


Фактически, objects - какой-нибудь STL-контейнер: container_template<MyClass*>. Можем опционально задать container_template (в том числе и свой):
Выделить всёкод C++
1:
    
void f(MyClass* ...<std::list> objects)


По умолчанию используется, например, std::vector.

При каждом конкретном вызове компилер генерит один из двух кодов:
// Последовательные контейнеры
container_template<arg_type> temp_container;
temp_container.push_back(arg1);
temp_container.push_back(arg2);
// ...
function(temp_container);
// Ассоциативные контейнеры
container_template<arg_type> temp_container;
temp_container.insert(arg1);
temp_container.insert(arg2);
// ...
function(temp_container);


Тип контейнера определяем с помощью концепций (если формально удовлетворяет в обе ктаегории - то пожалуй, отнесём к первой).

Неплохо также разрешить такой код:
Выделить всёкод C++
1:
    
void f(my_class& ... objects)

При этом будет использоваться некоторый стандартный шаблон-обёртка над контейнером, с фактическим хранением указателей, и разыменованиями в нужных местах (front, back, operator [], at, итераторы).

Сам контейнер передаётся, конечно, (в любом случае) по константной ссылке.


честно говоря, для меня выглядит дико как-то...



Цитата(Любитель @  24.6.2007,  10:36 Найти цитируемый пост)
Хотелось бы по конкретней узнать: будут ли специальные языковые конструкции для синхронизации (типа блок операций, выполняемых одновременно лишь в одном потоке)? Очень хотелось бы.

тут +1.

Цитата(Любитель @  24.6.2007,  11:53 Найти цитируемый пост)
Ничего не заметил ещё про столь обещаемые #push, #pop - для регулирования области видимости макросов.


Ещё - когда же мы получим инклюд без препроцессора?! Чтобы нормально разруливался дабл-инклюд (без лишних макросов + директив или же тем более компилерозависимых прагм). Чтобы после хейдера, в которым кто-то забыл закрывающую фигурную скобку поставить мы не видели непонятные ошибки в каждом третьем исходнике. И пр.

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

тут по каждому пункту тоже +1.



Цитата(Любитель @  24.6.2007,  11:53 Найти цитируемый пост)
Встаёт проблема с порядком компиляции (или как сие назвать) заголовков. Лучшем решением (не единственным, впрочем) вижу всё-таки введения понятия сборки/проекта/etc.. Встроенная минимал билд-система в некотором роде. Но в разумном виде. Можно проще поступить - задать конкретное правило полчения имени бинари-заголовка из обычного. Но это отдельно подумать надо...

Необходимость понятия сборки - также из-за желания иметь аналог internal из шарпа. Плюс его же применять к нэймспейсам (+классам, енумам и пр., хотя это не так нужно - но для симетрии).

а тут никакие стандарты уже не помогут. Слишком поздно. Раньше надо было (если вообще надо было) думать. У каждой ide своя система проектов, в Unix уже давным-давно с этим все выяснено, написано кучу утилит и программ, MS все равно плюнет на эту часть стандарта. Имхо, с этим заморачиваться просто бесполезно.



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Любитель
Дата 24.6.2007, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Цитата(JackYF @  24.6.2007,  12:57 Найти цитируемый пост)
а тут никакие стандарты уже не помогут. Слишком поздно. Раньше надо было

Помогут. Если разумно делать. Я ж не говорю про всю билд систему. А минимум. Более того - необязательно хранить в одном файле, можно разрулить по ходу по параметрам команд-лайна. В яве при компайле одного класса, скажем, если надо, скомпиляться все зависимые. Однако билд-системой это вряд ли можно назвать. Билд-система - это ant. С различными правилами, задачами и пр...

Цитата(JackYF @  24.6.2007,  12:57 Найти цитируемый пост)
MS все равно плюнет на эту часть стандарта

Вряд ли. Из серьёзных билд-систем MS поддерживает на сегодня 3 (!). Мэйкфайлы, файлы проектов (они работает как из гуи студии, так и команд-лайном) и нафиг не нужный MSBUILD.

Цитата(JackYF @  24.6.2007,  12:57 Найти цитируемый пост)
честно говоря, для меня выглядит дико как-то

Почему? Тем более, с каким-нибудь boost::any - по-моему очень неплохо получается smile На сегодня многие используют возврат ссылки на самого себя из метода или оператора. Первое (скажем QString::arg) выглядит не супер, второе (например, boost::format) чуть лучше, но идеальней был бы обычный список параметров переменной длины. Просто сишные варарги в плюсах как-то не лепятся smile


--------------------
PM MAIL ICQ Skype   Вверх
JackYF
Дата 24.6.2007, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(Любитель @  24.6.2007,  13:44 Найти цитируемый пост)
Помогут. Если разумно делать. Я ж не говорю про всю билд систему. А минимум. Более того - необязательно хранить в одном файле, можно разрулить по ходу по параметрам команд-лайна. В яве при компайле одного класса, скажем, если надо, скомпиляться все зависимые. Однако билд-системой это вряд ли можно назвать. Билд-система - это ant. С различными правилами, задачами и пр...

Не верю я. Даже если сделать разумно. Никто лишний раз ради переделки под будущий стандарт не будет переделывать мэйк-файлы, билд-системы и т.д. под новый стандарт.

Цитата(Любитель @  24.6.2007,  13:44 Найти цитируемый пост)
Почему? Тем более, с каким-нибудь boost::any - по-моему очень неплохо получается smile На сегодня многие используют возврат ссылки на самого себя из метода или оператора. Первое (скажем QString::arg) выглядит не супер, второе (например, boost::format) чуть лучше, но идеальней был бы обычный список параметров переменной длины. Просто сишные варарги в плюсах как-то не лепятся smile 

для меня пока дико. Для тебя - нет. Это же все имхо.



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Любитель
Дата 24.6.2007, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



Цитата(JackYF @  24.6.2007,  15:57 Найти цитируемый пост)
Никто лишний раз ради переделки под будущий стандарт не будет переделывать мэйк-файлы, билд-системы и т.д. под новый стандарт

Их не надо будет переделывать.

Что нам нужно:
1. Обеспечить среду для работы internal.
2. Разруливать зависимые друг от друга заголовки.

Для первого нужно знать - "свой" данный хедйер или нет. Тупой вариант - три варианта инклюда. Например:
Код

include iostream; // инклюд стандартного заголовка
include <boost/format.hpp>; // нестандартный, но и не наш
include "my_header.hpp"; // ТОЛЬКО наш


Для второго - два варианта:
1. Иметь взаимооднозначное (но компилерозавсисимое) соответствие хейдер -- бинари-хейдер. Например: "class1.hpp" -> "class1.bhpp", "class1.h" -> "class1.bh". При нахождение инклюда и не нахождение соответствующего бинари-хейдера - тупо генерить его.
2. Передавать список хейдеров в команд-лайн. ИМХО даже хуже будет. Соответствия тяжелей задавать, лучше иметь неявные.

По-моему, всё реально.


--------------------
PM MAIL ICQ Skype   Вверх
JackYF
Дата 24.6.2007, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(Любитель @  24.6.2007,  20:34 Найти цитируемый пост)
Тупой вариант - три варианта инклюда. Например:

А чем они принципиально отличаются? кроме путей?

Насчет бинари-хедеров - я бы за... но. Дороже, сложнее и дольше выйдет, как мне кажется. Спорить особо не буду - не пробовал ;).



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0991 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.