Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2011, 16:11   #1
B::ars
 
Регистрация: 11.05.2011
Сообщений: 3
Вопрос Чем ссылка на bool отличается от ссылки на int ?

Почему так? Кто-нибудь может объяснить поведение компилятора в приведенном примере кода?

Код:
#include <vector>

template < typename T >
T & f( T & x )
{
    return x;
}

int main()
{
    bool a;
    bool & a_ref = f( a ); // all right

    std::vector<int> int_v;
    int & x = int_v[0]; // all right

    std::vector<bool> bool_v;
    bool & y = bool_v[0]; // error

    /*
    GNU GCC Compiler:
    error: invalid initialization of non-const reference
    of type 'bool&' from a temporary of type 'std::_Bit_reference'

    Visual Studio 2008:
	error C2440: 'initializing' : cannot convert
	from 'std::_Vb_reference<_Sizet,_Difft,_MycontTy>' to 'bool &'
    */
}
B::ars вне форума Ответить с цитированием
Старый 17.12.2011, 16:14   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

это связанно с тем что std::vector оптимизирует хранение bool.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 17.12.2011, 16:53   #3
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

std::vector имеет уточненную версию для std::vector<bool>

Нужно уточнить в документации особенности работы с булевым вектором.
_Bers вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чем отличается журналист от корреспонедента? Golovastik Свободное общение 3 24.06.2010 19:08
Чем отличается IA-64 от IA-32 Ivan_32 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 09.06.2009 16:13
Чем отличается Tasm от Masm veter_s_morya Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 17 21.07.2008 16:55
Чем отличается кампилятор от интерпретатора prikolist Помощь студентам 1 20.06.2008 12:16
Чем отличается AX от BX? veter_s_morya Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 05.05.2008 16:50