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

Как написать шаблон is_complete?
Ответив на этот вопрос, я пытался найти шаблон is_complete в библиотеке Boost и понял, что в Boost.TypeTraits такого шаблона нет. Почему в библиотеке Boost нет такого шаблона? Как это должно выглядеть? //! Check whether type complete...
4093 просмотров
schedule 12.01.2023

Ограничение std::sort итераторами произвольного доступа
Мне просто интересно, поскольку вы все равно можете передавать итераторы произвольного доступа только std::sort , почему бы не применить это ограничение, определив его в первую очередь только для итераторов произвольного доступа? #include...
1362 просмотров
schedule 21.08.2022

Как определить итератор вложенного контейнера?
Как правильно объявить итератор i в следующем коде? #include <iostream> #include <vector> using namespace std; template<class Mat> void f(const Mat& mat) { typedef typename Mat::value_type::iterator itr; //itr i =...
2341 просмотров
schedule 03.09.2022

C++ и typetraits: простейший способ определения списка возможных определений
Я хочу определить функцию template<typename T> T constCast(const ScriptVar_t& s); . В зависимости от T я хочу иметь разные определения. ( ScriptVar_t — это класс, но в данном контексте детали здесь не важны.) Условия для T не так...
235 просмотров
schedule 23.01.2023

Почему эта структура не является стандартной?
Кусок кода стоит тысячи слов. #include <iostream> #include <type_traits> using namespace std; struct A { int a; }; struct B : A { int b; }; int main() { cout << is_standard_layout<B>::value << endl; //...
142 просмотров
schedule 29.08.2022

Черта типа для идентификации основного базового класса
Если у меня есть класс Base, по крайней мере, с одной виртуальной функцией и класс Derived, который наследуется отдельно от него, то (uintptr_t)derived - (uintptr_t)static_cast<Base*>(derived) гарантированно (с помощью Itanium ABI) будет равен...
2352 просмотров

Как переключать/выбирать типы во время компиляции?
Есть ли стандартный способ выбрать тип во время компиляции для беззнакового индекса в С++ 11? Например, что-то вроде: using type_0 = static_switch<0,T,U>; // yields type T using type_1 = static_switch<1,T,U>; // yields type U...
5805 просмотров
schedule 26.04.2023

Ограничение доступа к функции
У меня есть общий класс с функцией, которую я хочу ограничить только экземплярами типов с плавающей запятой во время компиляции. Как показано в примере ниже: template <typename T> class ClassName { // instance variables, etc.. void...
300 просмотров
schedule 31.08.2022

Признаки типов C++ в методе класса: частичная специализация, если параметром является перечисление
Моя платформа — Windows с Visual Studio Express 2012. У меня есть шаблонный метод следующим образом struct A { template<class T> void blub(T value); }; Я хочу иметь несколько специализаций, например: template<> void...
626 просмотров
schedule 09.12.2022

Как узнать, есть ли у типа функция-член с любым возвращаемым типом?
Мне нужно выяснить, есть ли у заданного типа функция X как вызываемая функция с заданным списком параметров. Однако проверка не должна заботиться о возвращаемом значении. Я нашел это решение из еще один вопрос о переполнении стека , который,...
618 просмотров
schedule 08.01.2023

is_constructible из списка фигурных скобок
Есть ли какое-либо намерение реализовать в STL вариант std::is_constructible , который подходит для определения того, конструируется ли конкретный тип из фигурных скобок, заполняется ли он указанным пакетом параметров или нет? Я имею в виду что-то...
107 просмотров
schedule 26.09.2023

различное поведение для перечислений и всех других типов
Используя gcc-4.8 с -std=c++11, я хочу создать функцию шаблона с одним поведением для перечислений и другим поведением для всех остальных типов. я пробую это #include <type_traits> #include <iostream> template<class T, class =...
50 просмотров
schedule 21.05.2022

Введите признаки для сопоставления указателя на коллекции
Я пишу класс сопоставления SFINAE, который может сопоставлять указатель на тип коллекции. В настоящее время у нас есть std::is_pointer, и я написал: // SFINAE test for const_iterator for member type template <typename T> class...
144 просмотров
schedule 08.01.2023

Как проверить, является ли конструктор копирования исключением без использования type_traits?
После некоторых экспериментов мне удалось написать фрагмент кода, который будет проверять, является ли конструктор перемещения класса noexcept (без использования type_traits; это просто упражнение): std::cout << std::boolalpha <<...
802 просмотров
schedule 05.04.2023

Невозможно вывести аргумент шаблона, который является функцией
Почему нельзя вывести F для proxy() ? Это должно быть возможно, потому что я ограничиваю его - только для функций, которые возвращают int . #include <utility> #include <iostream> #include <type_traits> using namespace...
1341 просмотров
schedule 29.03.2023

Шаблон С++ type_traits для добавления ссылки, если он не является константой
У меня есть шаблон класса, который принимает тип T . У него есть метод. Я хочу, чтобы этот метод возвращал тип T , если он const , и T& , если он не- const . template<typename T> class C { static typename...
431 просмотров
schedule 12.12.2022

Условно включить конструктор всякий раз, когда переменная-член может быть создана с помощью аргументов с переменным числом аргументов.
У меня есть класс foo с параметром шаблона Tuple , и я хочу предоставить конструктор аргументов с переменным числом аргументов для инициализации переменной-члена m_elements типа Tuple всякий раз, когда определяется выражение m_elements{...
172 просмотров
schedule 07.08.2022

Как определить, применим ли оператор [] к типу?
Я хотел бы написать шаблон функции, например template< typename T > void foo( T& obj ){ obj[0] = xxxxxx; } где T должен иметь применимый оператор []. T может быть массивом любого типа, std :: vector, std :: array или любого...
129 просмотров

Получение всех импортированных модулей с трейтами
Есть ли способ с трейтами получить все импортированные модули или какой-то другой способ? Насколько я вижу, «allMembers» не будет включать импортированных участников. Чего я хочу добиться, так это импортировать все элементы из импортированных...
137 просмотров
schedule 28.03.2023

Использование признака типа C++ для Objective-C++
Насколько мне известно, разработчики могут использовать признак типа С++, чтобы узнать «тип» класса и отношения между классами. Часть из них реализуется компилятором. Например, std::is_base_of<b, d>::value возвращает значение true, если b...
119 просмотров
schedule 01.08.2023