Вопросы по теме 'typetraits'

Какие черты характера используются / определены в стандарте C ++ 0x
Типаж в C ++ инкапсулирует семейство операций, которые позволяют алгоритму или структуре данных работать с тем типом, с которым он создается. char_traits - это пример группировки string - и функций, требующих файла. Но не все черты характера...
1000 просмотров
schedule 20.08.2022

Есть ли функция/макрос времени компиляции, чтобы определить, является ли структура С++ 0x POD?
Я хотел бы иметь C++0x static_assert , который проверяет является ли данный тип структуры POD (чтобы предотвратить непреднамеренное нарушение другими программистами новых участников). т.е., struct A // is a POD type { int x,y,z; } struct...
3743 просмотров
schedule 07.10.2022

С++: есть ли что-то вроде условного типа boost/std typetraits, которое генерирует значение (а не тип) во время компиляции?
В настоящее время я делаю следующее, чтобы сгенерировать значение во время компиляции, которое работает: //if B is true, m_value = TRUEVAL, else FALSEVAL, T is the value type template<bool B, class T, T TRUEVAL, T FALSEVAL>...
949 просмотров
schedule 30.07.2022

boost::aligned_storage копирует объекты НЕ-POD, такие как тип POD, при возврате
У меня есть класс, который использует хранилище boost::aligned для статического выделения памяти внутри объекта, а затем инициализирует объекты позже. Однако сбой в одной тестовой программе показывает, что деструкторы элементов вызываются для...
1141 просмотров
schedule 15.05.2024

Определение признаков для шаблонных классов
Я понимаю, как создавать черты типа, а затем специализироваться на конкретном классе, но в моем случае я хотел бы специализироваться на шаблоне класса. Приведенный ниже код не компилируется, но идея состоит в том, что специализация Traits для...
233 просмотров
schedule 27.05.2023

Проверка наличия члена, возможно, в базовом классе, версия C ++ 11
В https://stackoverflow.com/a/1967183/134841 предоставляется решение для статической проверки существования участника. , возможно, в подклассе типа: template <typename Type> class has_resize_method { class yes { char m;}; class...
9735 просмотров

указатель на статическую функцию-член недействителен в качестве аргумента шаблона для g++
Это часть моего фактического кода, который имеет дело с представлением классов C++ для Lua, например: #include <lua5.1/lua.hpp> #include <tuple> //in actual code, lots of specializations of these C++<=>Lua's stack helper...
667 просмотров
schedule 14.04.2024

Характеристики типа C ++ для извлечения класса параметров шаблона
В шаблоне я хочу развернуть параметр шаблона до реального не шаблонного типа. Так: template <typename T> struct MyTemplate { // sadly there's no extract_Base typedef typename extract_base<T>::MyType WorkType; }; struct X {};...
6840 просмотров
schedule 05.06.2022

CRTP + класс признаков: тип не назван
Я пытаюсь реализовать CRTP с шаблонным классом, и у меня возникает ошибка со следующим примером кода: #include <iostream> template<class T> class Traits { public: typedef typename T::type type; // <- Error...
2315 просмотров
schedule 18.10.2022

Как проверить, является ли класс B производным от семейства шаблонов классов
Как проверить во время компиляции, является ли класс B производным от std::vector? template<class A> struct is_derived_from_vector { static const bool value = ????; }; Как проверить во время компиляции, является ли класс B производным...
1524 просмотров
schedule 30.07.2023

Макрос для получения типа выражения
Вопрос Я пытаюсь написать макрос C++, который будет принимать либо type , либо type name в качестве входных данных и давать type в качестве выходных данных. Например: REMOVE_NAME(int) должно быть int REMOVE_NAME(int aNumber)...
533 просмотров
schedule 05.05.2024

Определить, является ли тип std::tuple?
В настоящее время у меня есть две функции: template<typename Type> bool f(Type* x); template<typename... List> bool f(std::tuple<List...>* x); Есть ли способ объединить эти две функции с дополнительным параметром шаблона,...
6388 просмотров
schedule 21.10.2023

Убедитесь, что аргумент является выходным потоком для консоли
Я пытаюсь сделать манипулятор потока для цвета для использования с выводом на консоль. Работает, меняя цвет текста и фона: std::cout << ConColor::Color::FgBlue << 123 << "abc"; //text is blue, sticky Проблема с подписью:...
277 просмотров

Специализация шаблона C ++ для предоставления / добавления различных функций-членов
Я немного экспериментирую с типами шрифтов и специализацией шаблонов. Например: enum TestEnum { VALUE0 = 0, VALUE1 = 1, VALUE2 = 2 //... And so on... }; template<int Value> class cTestClass; //specializations...
2235 просмотров

Есть ли способ использовать признаки типа С++, чтобы проверить, является ли тип шаблоном и какими-либо его свойствами?
Я хотел бы иметь возможность определить, является ли данный тип типом шаблона. Я просмотрел классы свойств типа boost, но не могу найти признаки is_*, связанные с шаблонами: http://www.boost.org/doc/libs/1_52_0/libs/type_traits/doc/html/index.html...
1560 просмотров
schedule 22.05.2023

Тестирование на наличие оператора сдвига влево
Я пытаюсь найти черту рабочего типа, чтобы определить, имеет ли данный тип перегрузку оператора сдвига влево для std::ostream (например, совместим с std::cout или boost::lexical_cast ). У меня был успех с boost::has_left_shift , за исключением...
1148 просмотров
schedule 17.11.2022

Вызов условной функции С++ с признаками типа
Предположим, у меня есть шаблон класса template <typename T> class X Можно ли как-то использовать черты типа или аналогичную технику для вызова (статического) метода T, но только если тип T объявляет такой метод, например. что-то вроде...
2211 просмотров
schedule 31.12.2022

Как определить строковый литерал с type_traits?
Как надежно выполнить static_assert для всего, что не является строковым литералом? Например, в следующем коде я попытался обернуть стандартный макрос утверждения, но статически отклонил все для сообщения, которое не является строковым литералом...
2890 просмотров
schedule 27.03.2022

Почему is_class‹T› не работает в этом сегменте кода?
Пытаюсь использовать is_class в следующем сегменте (урезанном из более крупного), но, похоже, это не работает. Что случилось? #include <type_traits> template<typename U, typename = void> struct xxxU_Impl { static void xxxU_push...
722 просмотров
schedule 27.06.2023

Как объявить значение итератора через decltype
В C++98 я обычно использую следующее для объявления переменной в типе значения итератора: typename std::iterator_traits<Iterator>::value_type value; В С++ 11 у нас есть decltype, и я подумал, что самый простой способ вывести тип...
3629 просмотров
schedule 05.07.2023