LINUX.ORG.RU

GCC круче разрабов STL?


0

1

Компиля одну несложную прогу словил следующий баг

/usr/lib/gcc/i686-pc-linux-gnu/4.6.1/../../../../include/c++/4.6.1/bits/stl_pair.h:109:39: error: array used as initializer
/usr/lib/gcc/i686-pc-linux-gnu/4.6.1/../../../../include/c++/4.6.1/bits/stl_pair.h:109:39: error: array used as initializer
Я правильно понял что GCC какбэ намекает что в stl_pair.h ошибка?

Кусок компилируемого кода где собственно фигурирует пара:

void AppClass::PushStat(){
	pair<char[17],char[6]> p;
	p=make_pair(type,str);
	stat.insert(p);
}

★★★

Последнее исправление: LIKAN (всего исправлений: 1)

GCC какбэ намекает, что у массивов нет конструктора копирования, юзай strncpy для p.first и p.second

aho
()

компилятор не может быть круче «людов», Кэп

shty ★★★★★
()
Ответ на: комментарий от aho

у массивов нет конструктора копирования, юзай strncpy для p.first и p.second

сказал бы юзай std::string, так нет же - давай плохому учить :)

shty ★★★★★
()

Темплейты это по-сути макросы, которые при компиляции раскрывабтся в какой-то код. И если в этом коде возникнет ошибка, то она будет отнесена к участку кода, определяющему шаблон.

Mihai-gr
()

Вот потому что

	pair<char[17],char[6]> p;

DELIRIUM ☆☆☆☆☆
()

Может быть так?

void AppClass::PushStat(){
	typedef char char17[17];
	typedef char char6[6];
	typedef std::pair<char17, char6> char17p6;
	stat.insert(char17p6(type, str));
}

iliyap ★★★★★
()
Ответ на: комментарий от shty

у Stl больше чем одна реализация, есличё

Это ежу ясно, но в сабже речь про обычный дистр с обычным STL от GCC.

Pavval ★★★★★
()

УМВР

gcc version 4.4.5

AIv ★★★★★
()

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

vertexua ★★★★★
()
Ответ на: комментарий от vertexua

Для этой цели придумали концепты, жаль, что в новом стандарте от них отказались

theNamelessOne ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.