Typetraits – вопросы и ответы

49
голосов
1
ответ
Я хочу построить черты, которые будут отвечать на такие вопросы, как is_vector , is_list и т.д. Проблема заключается в том, что я должен сделать две версии каждого, а именно шаблон шаблона один: te...
4 года, 10 месяцев назад Nikos Athanasiou
69
голосов
2
ответа
Предположим, что следующая ситуация: Существует шаблонный интерфейс, определяющий набор операций с различными типами данных. Этот интерфейс реализуется различными специализированными классами, опре...
4 года, 5 месяцев назад norritt
61
голос
1
ответ
Недавно я узнал, что ForwardIterators требуют, чтобы operator * возвращался по ссылке, а это означает, что итераторы, которые возвращают прокси, такие как std::vector<bool> , не могут быть Fo...
1 год, 2 месяца назад metalfox
107
голосов
4
ответа
Я пишу какую-нибудь программу для автоматического вызова некоторых API-интерфейсов с помощью генерации кода. В некоторых случаях мне нужно преобразовать из типа Source в тип Target , но эти типы ук...
3 года, 5 месяцев назад Germán Diago
90
голосов
1
ответ
Возможно ли каким-то образом получить базу определенного класса, чтобы она могла быть передана цепочкой шаблонов, подобной этому (псевдокод) template<typename base> class first { template_tak...
8 лет, 3 месяца назад user4910881
49
голосов
2
ответа
Я хочу написать trait-checker с именем is_pure_func_ptr, который может определить, является ли тип чистым указателем функции, следующим образом: #include <iostream> using namespace std; void ...
7 лет, 2 месяца назад xmllmx
70
голосов
2
ответа
У меня есть шаблонный класс, который должен принимать какие-то контейнеры (std :: array и std :: vector) каких-то объектов (в этом примере string и double). Моя цель - предоставить некоторую явную ...
1 год, 2 месяца назад Enzo Ferrazzano
61
голос
1
ответ
Почему подкласс B не является базовым классом A? Я знаю, что B есть A, но A не B, но если is_same не возвращает true для этих случаев, то я считаю, что его использование ограничено. Есть ли функция...
4 года, 10 месяцев назад DeepDeadpool
86
голосов
2
ответа
У меня вопрос о реализации std::remove_extent (visual studio 11) template<class _Ty> struct remove_extent { typedef _Ty type; }; template<class _Ty, unsigned int _Ix> struct remove_exte...
6 лет, 9 месяцев назад Frahm
51
голос
1
ответ
У меня есть несколько шаблонов проверки типов: is_object от type_traits и isSupportedContainer реализован следующим образом: template <class T> struct isSupportedContainer : public false_type...
4 года назад Alex
49
голосов
3
ответа
Я хочу переключить пройденное значение с помощью стандартного типа C++. Вот тестовый код показывает, что я имею в виду: template<typename T> T _func(T t, std::is_integral<T>||std::is_en...
3 года, 1 месяц назад Ringo_D
49
голосов
1
ответ
Я пишу код для проверки того, что подпись свободной функции равна сигнатуре функции-члена и т.д. Он сравнивает извлеченные типы возвращаемого типа и аргументы функции: #include <tuple> #inclu...
1 год, 7 месяцев назад Anton Lashkov
59
голосов
2
ответа
Предположим, что у меня есть шаблон class A следующим образом: template<typename T> class A { T data; public: void func(){} //concerned function ** see here ** }; Теперь у меня есть еще один ...
2 года, 8 месяцев назад user4910881
99
голосов
3
ответа
Я пытаюсь закодировать черту типа is_iterator<T> . Где, когда T - тип итератора is_iterator<T>::value == true , в противном случае - is_iterator<T>::value == false . То, что я про...
5 лет, 6 месяцев назад 101010
77
голосов
1
ответ
Теперь я пишу обертку для некоторых функций библиотеки Windows, поэтому мне нужно извлечь их прототип и написать новую оболочку с модифицированным прототипом. Например: функция int recv(SOCKET, cha...
5 лет, 11 месяцев назад Ta Thanh Dinh
61
голос
3
ответа
У меня много классов с typedef std::function<void(PARAMS)> , где PARAMS специфичен для каждого класса. Мне нужно специализироваться на основе количества параметров и первого типа параметра. Я...
7 лет, 5 месяцев назад Collin Dauphinee
70
голосов
2
ответа
Как определить тип класса при игнорировании его параметров шаблона. поэтому для полностью указанного типа, такого как MyClass<param1, param2,...> , я хочу проверить, действительно ли это тип ...
5 лет, 8 месяцев назад iNFINITEi
60
голосов
2
ответа
Поэтому у меня есть эта функция, GetProperty() , которая определяется следующим образом: template<typename T> void GetProperty(T & val) Я хочу, чтобы это принимало три возможных значения:...
4 года, 6 месяцев назад Shenjoku
84
голоса
1
ответ
Я знаю о std::is_pod . Но он проверяет не только совокупные типы. Или, std::is_pod только лучшее, что мы можем сделать? В принципе, я хочу написать шаблон функции для этого : template <typename ...
4 года назад Lingxi
50
голосов
2
ответа
Я хочу реализовать некоторые функции чтения из std::ifstream . Он должен разделять между типом pod и другими. (в настоящее время std::string ) template <typename T, typename = std::enable_if<...
2 года, 5 месяцев назад TwisTeDStRiDeR
77
голосов
2
ответа
У меня есть указатель типа Ptr. Это могут быть T *, unique_ptr, shared_ptr или другие. Как получить его заостренный тип во время компиляции? Я пробую следующее, но не удалось template<class Ptr&...
5 лет, 9 месяцев назад user1899020
70
голосов
1
ответ
Возможно ли построить тип типа в C++, который проверяет, является ли данный тип шаблона доступным с заданными типами в качестве параметров шаблона? Если это возможно, как это можно сделать? Наприме...
1 год, 8 месяцев назад Maarten Bamelis
68
голосов
0
ответов
Насколько я знаю, множество типов, которые используются библиотекой графов наддува (BGL), определены в структуре graph_traints . Интересно, как я могу переопределить эти типы для моего собственного...
9 месяцев, 1 неделя назад hsalimi
70
голосов
3
ответа
Мой вопрос: Есть ли способ определить, является ли параметр литеральной строкой или нет? template<class T> bool IsLiteral(T arg) { // How to implement? } или template<class T> struct Is...
6 лет, 5 месяцев назад xmllmx
138
голосов
3
ответа
Объект (возможно, не С++ 14, возможно, библиотека TS) make_optional определен ( в n3672 ) как: template <class T> constexpr optional<typename decay<T>::type> make_optional(T&&...
5 лет, 7 месяцев назад ecatmur
90
голосов
1
ответ
В шаблоне я хочу развернуть параметр шаблона в реальном нетемплифицированном типе. Итак: template <typename T> struct MyTemplate { // sadly there no extract_Base typedef typename extract_base...
7 лет, 8 месяцев назад queen3
48
голосов
1
ответ
iso 20.9.4.3 Свойства типа [meta.unary.prop] не полностью поддерживаются g++ libstdc++ -v3; например: wget -O - https://gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/include/std/type_traits 2>/dev/null...
5 лет, 7 месяцев назад Solkar
98
голосов
1
ответ
Теперь я изучаю, как использовать boost :: geometry library, и я следую руководству, где вводятся черты типа, чтобы сделать коды более универсальными. Например, функция distance ниже считается гене...
3 года, 7 месяцев назад feelfree
59
голосов
2
ответа
У меня есть общая функция, возвращающая некоторую переменную типа <T> . Я передаю некоторые 2 итератора функции. Затем я пытаюсь вычислить размер вектора с distance функции. Внутри func я опр...
2 года, 7 месяцев назад axcelenator
69
голосов
3
ответа
Многие из помощников Boost SFINAE появились в библиотеке std с С++ 11, но has_dereference , похоже, не имеет. Помимо этой функции, мне удалось устранить зависимость Boost от моего пакета, и я хотел...
3 года, 10 месяцев назад andybuckley
50
голосов
1
ответ
Если я создаю итератор, который, например, возвращает значение, умноженное на два (similair to boost :: range :: transform), какой тип должен содержать член iterator::reference itpedef iterator::re...
5 лет, 11 месяцев назад Viktor Sehr
49
голосов
1
ответ
Я использую библиотеку boost fusion для грамотности всех членов структуры. Identity является членом Namespace::SomeClass . Через некоторые рекурсивные операции v конечном итоге будет объектом Names...
4 года назад XTT
69
голосов
1
ответ
Я пытаюсь сделать статическое утверждение, чтобы проверить, что для двух типов A и B; класс A должен иметь открытый конструктор подписи A (B & b) или (const B & b). Я хотел бы иметь что-то ...
5 лет, 9 месяцев назад iNFINITEi
-4
голоса
1
ответ
struct A { int x; }; int main() { int A::* pt = &A::x; return 0; } Что означает int A::* ? Я никогда не видел синтаксиса C++, как это.
2 года, 8 месяцев назад linrongbin
61
голос
1
ответ
Можно ли вывести количество конструкторов, которые имеет тип во время компиляции? #include <iostream> #include <type_traits> struct A{ int m_i; float m_f //constructor 1 A(int i): m_i(i...
4 года, 8 месяцев назад Trevor Hickey
90
голосов
2
ответа
Я пытаюсь написать код здесь , но используя возможности С++ 11 без Boost. Работая с в этом примере , я попытался определить условную компиляцию
7 лет, 2 месяца назад bobobobo
106
голосов
1
ответ
В С++ 11 было введено два разных дополнения к тому, как мы можем обрабатывать перечисления: возможность их охвата и возможность их ввода. Итак, теперь у нас есть четыре разных подтипа перечисления:...
1 год, 6 месяцев назад ScumCoder
69
голосов
1
ответ
Рассмотрим вид типа следующего вида: template <class T> struct is_instantiable { static constexpr bool value = /* something */; }; template <class T> inline constexpr bool is_instantiab...
1 год, 10 месяцев назад Vincent
62
голоса
1
ответ
Я играл с шаблонами и хотел бы обеспечить, чтобы тип шаблона, заданный функции, имел определенный статический член. К сожалению, нет типа std::is_static . Яркий пример того, как я буду использовать...
2 года, 8 месяцев назад HateDread
97
голосов
4
ответа
ПРЕДПОСЫЛКИ Я пытаюсь написать class template Hasher , который будет реализован двумя разными способами в зависимости от того, был ли реализован std::hash<T> для T: template<typename T>...
6 лет, 1 месяц назад kfmfe04
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема