У меня есть проблемы с последней Cygwin (1.7.24 64bit, GCC 4.8.1-3 64bit) компилятор в этом шаблоне:C++ Cygwin числовая константа ошибка сборки в шаблоне
template <typename _T, int _N>
vector<_T> makeVector(const _T(&data)[_N]) {
return vector<_T> (data, data + _N);
}
Компилятор говорит:
error: expected '>' before numeric constant
Но я уверен, что это действительный код, потому что я построил его в прошлом на Windows с TDM-GCC и на школьном тестировании Linux.
Если вы знаете, как решить эту проблему, пожалуйста, дайте мне знать, Спасибо.
Это ваш код или код, принадлежащий стандартной библиотеке? ... потому что это ** не ** действительный код пользователя! –
@ DietmarKühl Это неверный код библиотеки, если не используется какое-либо специальное поведение компилятора, поскольку в качестве программиста я имею право делать '#define data 42' перед включением любого из заголовков системы. –
@JamesKanze: Я собирался заявить то же самое, но на самом деле пользователь ** не ** допускал '#define data 42', прежде чем включать какую-либо часть стандартной библиотеки C++, потому что' data' - это имя члена одного из стандартных классов C++ или шаблонов классов (например, 'data' является членом' std :: basic_string' и 'std :: Vector'). То есть, библиотеке фактически разрешено использовать идентификатор 'data'! Ну, не только разрешено - он должен использовать его в некоторых местах. –