Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.79
volovzi
267 / 169 / 8
Регистрация: 14.03.2010
Сообщений: 501
#1

Ошибка компиляции как положительный результат - C++

09.08.2012, 19:45. Просмотров 1817. Ответов 20

Товарищи, подскажите, пожалуйста, есть ли возможность средствами плюсов следить за ошибками компиляции?

Необходимо в процессе компиляции встретить некоторое выражение, удостовериться, что на нём произошла ошибка компиляции, и продолжить компиляцию дальше. При этом в итоге компиляция должна пройти успешно, то есть эта ожидаемая ошибка должна быть подавлена. Получается нечто вроде исключений, но для компиляции.

Если средствами плюсов такое сделать не получится (что вероятнее всего), то как можно попроще это реализовать внешними инструментами?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.08.2012, 19:45     Ошибка компиляции как положительный результат
Посмотрите здесь:
C++ Результат компиляции
C++ Антивирус Касперского считает зараженным результат компиляции
Каким будет результат компиляции и выполнения данного кода? C++
C++ Каким будет результат компиляции и выполнения данного кода?
Почему результат компиляции маленькой программы на с++ имеет довольно большой размер? C++
C++ Ошибка при компиляции. Как правильно создавать класс с объектами от другого класса?
Ошибка при компиляции. Где ошибка? (Работа с классом) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.03.2015, 12:59     Ошибка компиляции как положительный результат
Еще ссылки по теме:
Наименьший положительный элемент (0 не положительный) C++
При компиляции ошибка. Ошибка c++ C2678 C++
Ошибка компиляции C++
Ошибка компиляции C++
C++ Ошибка компиляции

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Виктор_Сен
33 / 26 / 1
Регистрация: 01.08.2011
Сообщений: 176
21.03.2015, 12:59     Ошибка компиляции как положительный результат #21
Автору вопроса это скорее всего уже не актуально. Но может кому-нибудь пригодится. Не могу утверждать, что достаточно хорошо разбираюсь в метафункциях, и что это решает вопрос, но мне интересно узнать мнение экспертов. Недавно столкнулся с такой проблемой. Нужно определить, существует ли шаблон с определёнными параметрами. То есть если записать шаблон с определёнными параметрами, корректна ли эта запись с точки зрения компилятора. И мне после долгих мучений удалось разрешить эту задачу. Я использовал следующие статьи с хабра:http://habrahabr.ru/post/205772/ http://habrahabr.ru/post/54762/ http://habrahabr.ru/post/206458/. Проверял в VS 2012, кстати, он не поддерживает "constexpr", но у меня всё нормально работало со "static const". Минимально возможный код по объёму для метафункции проверки корректности шаблона, который мне удалось получить:
C++
1
2
3
4
5
6
7
8
9
        template<typename T> struct _type_is_correct
        {
        private:
            static bool test_func(T t);
            static void test_func(...);
        public:
            static const bool value=
                std::is_same<bool,decltype(test_func(std::declval<T>()))>::value;
        };
Далее, это можно использовать как-то так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
template<typename T, typename E=void> class SomeClass;
template<typename T> class SomeClass<T,typename std::enable_if<std::is_integral<T>::value>::type>
{
 
};
 
int main()
{
    if (_type_is_correct<SomeClass<int>>::value)
    {
        std::cout<<"SomeClass<int> is correct"<<std::endl;
    } 
    else
    {
        std::cout<<"SomeClass<int> is not correct"<<std::endl;
    }
 
    if (_type_is_correct<SomeClass<float>>::value)
    {
        std::cout<<"SomeClass<float> is correct"<<std::endl;
    } 
    else
    {
        std::cout<<"SomeClass<float> is not correct"<<std::endl;
    }
 
    system("pause");
    return 0;
}
Yandex
Объявления
21.03.2015, 12:59     Ошибка компиляции как положительный результат
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru