Да, это уже fxsaber отметил.
Но, с другой стороны - они правы, как можно использовать структуру ДО ее объявления ?
Да, я поспешил в выводами. Действительно структуру нельзя использовать. Просто в таком виде оно успешно компилируется в С++. Но при попытке обратиться к какому-либо члену структуры выдаётся ошибка.
Тему можно удалить.
struct A; void f(A& a) {} struct A { };
template <typename T> bool f(); bool b = f<int>(); template <typename T> bool f() { return(true); }
но при этом уводит компилятор в бесконечный цикл.
В чем принципиальное отличие исходного варианта от этого?
В C++ отличий нет, оба варианта не компилируются при попытке обращения к объекту. А здесь иначе, что и ввело меня в заблуждение.
А этот код ошибок не вызывает
но при этом уводит компилятор в бесконечный цикл.
В С++ это работает нормально.
В С++ это работает нормально.
Почему и для C++ вариант для структуры и для функции отличается? И там и там предварительное задание присутствует.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Баг компилятора: undefined struct cannot be used
Alexey Navoykov, 2018.11.09 11:26
В C++ отличий нет, оба варианта не компилируются при попытке обращения к объекту. А здесь иначе, что и ввело меня в заблуждение.
Что-то вы поздно спохватились. Эта проблема всплыла уже давно:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Stanislav Korotky, 2018.07.28 22:29
Отвлекся на годик от своей реализации STLMQL и теперь это чудо не компилируется. Был такой код (упрощен до минимального для воспроизведения ошибки):
template<typename T> class IterableContainer; class STL { template<typename T, typename UP> bool all_of(IterableContainer<T> &c, UP p) const // ошибка { return true; // all_of(c.begin(), c.end(), p); } }; template<typename T> class IterableContainer { };
Теперь форвард декларация не компилируется - выдается ошибка undefined class 'IterableContainer' can not be used. Без форвард деклараций я там не обойдусь. Не соображу, как поправить.
MQ обещали починить, но в связи с "кончиной" сервис-деска исход неизвестен.
Что-то вы поздно спохватились. Эта проблема всплыла уже давно:
MQ обещали починить, но в связи с "кончиной" сервис-деска исход неизвестен.
Проверил ваш код на текущем билде - всё компилируется.
Значит есть разница в обработке шаблонизированных классов/структур.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
В старых билдах работало нормально.