Форум программистов, компьютерный форум, киберфорум
Наши страницы

make_pair - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сверхбольшие числа http://www.cyberforum.ru/cpp-beginners/thread346569.html
Нужно например мне хранить и выполнять действия с числом 1 235 589 145 236 987 125 874 369 123 253 964 123 362 584 128 983 125 412 325 698 458 488 548, 152 Как это сделать, но так чтоб нечего...
C++ 2 вопроса Всем привет! У меня 2 глупых вопроса 1. Допустим, такой код int value() const { return m_nValue; } В чём смысл const? http://www.cyberforum.ru/cpp-beginners/thread346548.html
Синхронизация доступа C++
Собственно есть массив структур. У данной структуры есть переменная, которая хранит состояние данной структуры(готова,не готова). В процессе работы приложение (многопоточное) циклично проверяет этот...
C++ Односвязный список (задача)
Задача в следующем есть код нужна переправить его таким образом чтобы программа удаляла заданный символ. Сейчас программа удаляет 3 первых символа. #include <iostream> using namespace std; ...
C++ Цифровая подпись приложения http://www.cyberforum.ru/cpp-beginners/thread346505.html
Здравствуйте. Когда запускаю приложение, антивирус ругается на отсутсвие цифровой подписи, и спрашивает разрешить запуск или нет. Вопрос. Как реализовать или встроить в свое приложение...
C++ Проверьте пожалуйста. Правильно ли написано. Программа работает как в задании. Но может есть ошибки? Подскажите. #include <iostream> #include <string> using namespace std; struct car { char name; ... подробнее

Показать сообщение отдельно
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
30.08.2011, 13:10
181. make_pair() unintended behavior

Section: 20.3.5 [pairs] Status: TC1 Submitter: Andrew Koenig Opened: 1999-08-03 Last modified: 2010-10-29

View all other issues in [pairs].

View all issues with TC1 status.

Discussion:

The claim has surfaced in Usenet that expressions such as

make_pair("abc", 3)

are illegal, notwithstanding their use in examples, because template instantiation tries to bind the first template parameter to const char (&)[4], which type is uncopyable.

I doubt anyone intended that behavior...

Proposed resolution:

In 20.3 [utility], paragraph 1 change the following declaration of make_pair():

template <class T1, class T2> pair<T1,T2> make_pair(const T1&, const T2&);

to:

template <class T1, class T2> pair<T1,T2> make_pair(T1, T2);

In 20.3.5 [pairs] paragraph 7 and the line before, change:

template <class T1, class T2>
pair<T1, T2> make_pair(const T1& x, const T2& y);

to:

template <class T1, class T2>
pair<T1, T2> make_pair(T1 x, T2 y);

and add the following footnote to the effects clause:

According to 12.8 [class.copy], an implementation is permitted to not perform a copy of an argument, thus avoiding unnecessary copies.

Rationale:

Two potential fixes were suggested by Matt Austern and Dietmar Kühl, respectively, 1) overloading with array arguments, and 2) use of a reference_traits class with a specialization for arrays. Andy Koenig suggested changing to pass by value. In discussion, it appeared that this was a much smaller change to the standard that the other two suggestions, and any efficiency concerns were more than offset by the advantages of the solution. Two implementors reported that the proposed resolution passed their test suites.
отсюда
7
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru