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

Во время компиляции определить, является ли тип полным - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Автоматическое формирование html – страниц, c++ http://www.cyberforum.ru/cpp/thread1380386.html
Добрый день!!! Передо мной стоит следующая задача - создать программу, которая автоматически закачивает указанную пользователем страницу из интернета, модифицирует её и, затем, открывает в браузере. В качестве модификации можно выбрать любое небольшое предложение (например, "Добрый день!"). Данная программа должна быть реализована в пакете VS 2010 express. Заранее всем спасибо!
C++ Cast from const_iterator to iterator Доброго времени суток. Существует ли способ просто и быстро вытащить итератор из константного итератора? Вариант с distance не предлагать. Нужен быстрый способ. Пробовал так: http://www.cyberforum.ru/cpp/thread1380038.html
Adobe Flash Player (src) C++
Форумчане, кто-нибудь из вас натыкался на исходники флеш плеера? Если да, то можете их скинуть? Просто адобе свой 11 флеш выкладывали в опен сорс когда-то, а я проворонил этот момент)
C++ [trigraph] Как отключить? Как устранить триграф из литерной константы?
Доброго времени суток. Сборка Debug при помощи mingw482_32. Возникла проблема с триграфами. Вообще то, я всегда думал, что триграфы по дефолту отключены. Но у меня они почему то оказались включенными. В связи с этим два вопроса: 1. Каким волшебным ключиком компилятора деактивировать?
C++ Построение libjpeg-turbo http://www.cyberforum.ru/cpp/thread1379484.html
проблемы с построением libjpeg-turbo http://sourceforge.net/projects/libjpeg-turbo/ скачал сорцы, выполнил cd {build_directory} cmake -G "Visual Studio 10" {source_directory} создались файлы проекта. но при сборке пишет что не может открыть simd\MinSizeRel\jsimdcpu.obj
C++ Неразрешенный внешний символ "__imp__closesocket@4 Пишу вот такой код: #include <Winsock2.h> #include <errno.h> #include <string> enum CONNECTION_STATUS { CONNECTION_STATUS_OK, подробнее

Показать сообщение отдельно
schdub
2940 / 1284 / 238
Регистрация: 19.01.2009
Сообщений: 3,358
Завершенные тесты: 1
24.02.2015, 14:47     Во время компиляции определить, является ли тип полным
hoggy, под CL почему компилируется не знаю. Копилировал под GCC 4.8. Если закомментировать строки ниже 73, то компилятор спотыкается на вызове:
C++
1
IsComplete<pair_nocomplete>::value
Код
/usr/include/c++/4.8/bits/stl_pair.h: In instantiation of ‘struct std::pair<double, nocomplete>’:
a.cpp:41:1:   required by substitution of ‘template<class U> static decltype (fake(U())) IsComplete<T>::test(void*) [with U = U; T = std::pair<double, nocomplete>] [with U = std::pair<double, nocomplete>]’
a.cpp:41:1:   required from ‘class IsComplete<std::pair<double, nocomplete> >’
a.cpp:62:39:   required from here
/usr/include/c++/4.8/bits/stl_pair.h:102:11: error: ‘std::pair<_T1, _T2>::second’ has incomplete type
       _T2 second;                /// @c second is a copy of the second object
           ^
a.cpp:30:8: error: forward declaration of ‘struct nocomplete’
 struct nocomplete;
        ^
Решить эту проблему можно специализировав шаблонный класс IsCompete для std :: pair<T1, T2> и проверив полные ли типы T1 и T2:

C++
1
2
3
4
template <class T1, class T2> class IsComplete< std::pair<T1, T2> > {
public:
    enum { value = IsComplete<T1>::value && IsComplete<T2>::value };
};
Если хочется гарантированно избежать проблем с компиляцией, то же самое нужно сделать для Т1, Т2 и всех их вложенных типов.

Код
WELLCOME TO EXAMPLE APPLICATION!
is complete 'nocomplete' ? (must be 0) - 0
is complete 'complete' ? (must be 1) - 1
is complete 'pair_nocomplete' ? (must be 0) - 0
is complete 'pair_complete' ? (must be 1) - 1
Если раскомментировать строки ниже 73 включительно, то будет ошибка компиляции, из-за не полного типа nocomplete.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru