Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Возможно переписать программу? https://www.cyberforum.ru/ cpp/ thread153534.html
Есть программа Upgrade UA.exe хочу запустить ее на windows mobile 6. Возможно ли ее переписать.
scanf C++
Пусть нужно читать из текста слова, пропуская все символы, кроме a-z и A-Z. То есть из текста Hello, world! ololo O_o получить только Hello world ololo O o Меня интересует, можно ли это...
C++ Вернуть stdin в консоль
Допустим я перенаправил поток stdin/stdout в файл с помощью функции freopen. Как заставить его снова работать с консолью? Добавлено через 9 минут Нашел. #include <cstdlib> #include <stdio.h>...
C++ Прошу помочь.Подключение dll на неуправляемом С/С++ Возникла проблема.Есть рабочая dll, необходимо подключить к CLR приложению. Подключение происходит нормально. Все функции работают нормально кроме одной(хотя dll проверял все работает в обычных... https://www.cyberforum.ru/ cpp/ thread152917.html
C++ Не сразу закрывающаяся программа https://www.cyberforum.ru/ cpp/ thread152799.html
Есть команды в терминале.. вроде telnet или sql, эти программы запускаешь и они остаются открытыми пока не дашь команду, например, quit. Во время работы программы она показывает знак приглашения...
C++ Парсер на С
вопшем есть файл с текстом..... в етом файле есть какие даные(мусор)...и есть дни: Понедельник,Вторник,среда......с етого файла нада вывести ети дни в порядке нахождениэ... ето походу несложная...
C++ Кто нибудь подскажет где можно найти исходник С/C++ алгоритм сжатия
Народ помогите, у меня времени нет чтобы самому разрабатывать алгоритм сжатия очень нужен алгоритм ещё лучше если на Asm (MMX, SSE2-3, SIMD) чтобы без потери данных а с восстановлением. Может какие...
C++ ANSI или UNICODE Всем привет!!! У меня возникла такая ситуация что использовать в WinApi программирование ANSI или UNICODE, где-то читал, что UNICODE работает быстрее, чем ANSI, так как при использование ANSI он ... https://www.cyberforum.ru/ cpp/ thread151437.html
C++ mingw и lib https://www.cyberforum.ru/ cpp/ thread151211.html
Как в mingw в коде подключить файл lib, #pragma comment(lib, "Gdi32.lib") не помогает. А то пытаюсь использовать SetTextColor и подобные функции, а без полезно без Gdi32.lib. Кто может подскажите.
C++ Шилдт Полный справочник по С++ 4.0 Собственно ищу код к справочнику, о котором упоминалось на обложке. https://www.cyberforum.ru/ cpp/ thread150953.html
Эксперт С++
623 / 467 / 57
Регистрация: 28.01.2011
Сообщений: 605
19.04.2011, 16:45 0

Задачи для тренировки и лучшего понимания

19.04.2011, 16:45. Просмотров 407221. Ответов 1272
Метки (Все метки)

Ответ

ForEveR
Нехилая задачка, долго пришлось думать и заодно хорошенько перечитать стандарт Компилятор при разрешении перегрузки имен должен следовать принципу Koenig lookup( кстати, Кёниг это не какой-нибудь член комитета, случаем? ), то есть если в вызове функции присутствуют параметры class/enum типов , то впридачу к обычному поиску имен в охватывающих пространствах он еще должен будет заглянуть в пространства имен, в которых содержатся типы этих самых параметров(кстати, порядок явно не оговаривается( хотя , может, я не увидел), по этому поводу никаких особых указаний нет?). А самое интересное, что как только компилятор находит в просматриваемом пространстве имен хотя бы одно объявление , в данном случае operator+, то в пространство имен на уровень выше он уже не полезет!

Таким образом, если чуток подправить пример и отправить объявление operator+ в то же пространство имен, в котором находится X, то std::accumulate должен будет заглянуть в пространство имен NS и найти там нужный operator+.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <numeric>
namespace NS
{
        struct X { };
    int operator +(int i, X) {return i+1;}
}
 
int main()
{
        NS::X c[10];
        std::accumulate(c, c+10, 0);
        return 0;
}
такой код должен скомпилироваться на любом компиляторе, а вот исходный вовсе не должен, так как в процессе обхода пространства имен ::std компилятор вполне вероятно может наткнуться на какое-то определение operator+, не важно, с какой сигнатурой, и просто-напросто дальше в глобальном пространстве искать не будет. Следовательно, код непереносимый, так как, вообще говоря, зависит от реализации stl, либо могут быть подключены заголовки в <numeric>, которые объявляют operator+, либо в самом <numeric> может быть объявление какого-то operator+( может, специализация там какая интересная для стандартных типов stl или еще что ). В студии как раз реализуется первый случай, подключается серия заголовков <utility>, <xutility> в которых есть определения operator+ для типов разности различных итераторов, поэтому в сообщениях об ошибке фигурируют всякие _String_Iterator, _difference_type и прочие.


Вернуться к обсуждению:
Задачи для тренировки и лучшего понимания
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.04.2011, 16:45

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Проверить на правильность и закомментировать весь код для лучшего понимания
Всем здравствуйте. Условие задачи - Заданная матрица целых чисел размером (N, N). Найти среднее...

Нужны задачи для тренировки
Киньте задачки на классы......а то в самоучителе, по которому я учу Сишку....приведены задачки,...

Нужны задачи для тренировки
Здравствуйте киньте пожалуйста задания по с++ для человека начинающего изучать Turbo с++

Нужны задачи для тренировки
Вот не давно был школьный этап по программирование в школе(олимпиады). Меня закинули на городскую,...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.