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

52
голоса
1
ответ
У кого-то есть идея, как проверить, является ли произвольный метод const? Подобно: static_assert(is_const<vector<int>::size>::value, "size is not const"); static_assert(!is_const<vec...
16 часов назад Martin
73
голоса
1
ответ
template <class T> class Base { static_assert(!std::is_default_constructible<T>::value, "T must not be default constructible"); }; struct X1 : Base<X1> {}; struct X2 : Base<X2&...
17 часов назад bolov
72
голоса
1
ответ
Я хочу, чтобы класс признаков применялся к типу, а также к его деседантам. Возможно ли это? template <typename E> struct Garble { }; template <typename T> struct wooble_traits; template...
1 день, 12 часов назад dspyz
98
голосов
1
ответ
std::back_insert_iterator имеет value_type , равный void , но также имеет элемент protected container , который содержит указатель на базовый container . Я пытаюсь написать класс признаков для извл...
1 день, 13 часов назад TemplateRex
80
голосов
1
ответ
Я пытаюсь лучше понять decltype , чтобы определить тип выражения во время компиляции. Скажем, например, я делаю это с двойной переменной: #include <iostream> #include <type_traits> int ...
1 день, 14 часов назад FrankS101
51
голос
1
ответ
В очень простой ситуации с ограниченным конструктором, проверяющим конвертируемость аргумента, ошибка возникает в clang, но не в g++: #include <type_traits> template <class T, class U> ...
1 день, 16 часов назад spraetor
100
голосов
1
ответ
Могу ли я использовать С++ Type Traits, чтобы проверить, является ли тип контейнером типа STL? Я уже знаю GCC builtin __is_class , но я хотел бы быть более конкретным, если это возможно.
1 день, 19 часов назад Nordlöw
53
голоса
1
ответ
У меня есть два набора кода, первый из которых компилируется и ведет себя так, как ожидалось, но [представляется] бесполезным подробным: template<point_type type, typename T> struct point2d_b...
2 дня, 14 часов назад Xirema
72
голоса
1
ответ
Скажем, у меня есть metafunction Filter , который фильтрует список типов: template<template<typename> class TFilter, typename... Ts> using Filter = MetaList</* check TFilter<T>...
2 дня, 14 часов назад Vittorio Romeo
50
голосов
1
ответ
Учитывая класс, который принимает два параметра шаблона политики: template<typename PolicyA, typename PolicyB> class widget; И следующие доступные классы политики A1, A2, A3, B1, B2, B3. Как ...
2 дня, 16 часов назад screwnut
50
голосов
1
ответ
Я хочу, чтобы пользователь мог контролировать "внутренний тип" базового класса. Этот код работает отлично. Версия 1 ( демо ) //library layer template<class Derived> class BT_trait{ public: us...
2 дня, 17 часов назад cppBeginner
61
голос
1
ответ
У меня есть тип Type и переменная tmp : template<typename Type> myFunction() { /* SOMETHING */ tmp = 0; }; Я хотел бы объявить tmp как Type , если Type - тип с плавающей запятой и double , ес...
2 дня, 19 часов назад Vincent
54
голоса
1
ответ
Скажем, у нас есть структура, где мне нужно проверить типы параметров шаблона (wchar_t - это просто пример): template <typename T> struct Foo { static_assert(std::is_same<T, wchar_t>::v...
2 дня, 20 часов назад Michał
138
голосов
1
ответ
У меня возникла проблема с выводом типа одного элемента массива С++. Я хотел бы сделать что-то вроде: template <class T> struct array_element { }; template <class T> struct array_elemen...
3 дня, 13 часов назад W.F.
62
голоса
1
ответ
Я хотел бы использовать шаблон std::add_pointer<type> из заголовка C++ <type_traits> чтобы построить указатель на тип массива. Однако следующее генерирует ошибку double *y[2]; std::add_...
3 дня, 19 часов назад Andreas H.
50
голосов
1
ответ
Я пытаюсь понять понятие черт типа. Скажем, у меня есть некоторый templatized класс Hierachy, как это, и клиентская функция: template<typename T> class Base { public: //... virtual bool inlin...
4 дня, 15 часов назад worenga
197
голосов
1
ответ
EDIT: В качестве примера я использовал случай if if else, который иногда может быть разрешен во время компиляции (например, когда задействованы статические значения, cf <type_traits> ). Адапт...
4 дня, 16 часов назад Sheljohn
191
голос
1
ответ
Является ли следующий шаблон кода разумным при использовании признаков в шаблоном коде, где обе альтернативные реализации всегда компилируются? Чтение кода кажется более ясным, чем использование др...
4 дня, 17 часов назад Miral
105
голосов
1
ответ
В С++ 0x я хотел бы определить, является ли класс тривиальным/имеет стандартный макет, поэтому я могу использовать memcpy(), memset() и т.д.... Как мне реализовать код ниже, используя type_traits, ...
5 дней, 13 часов назад kfmfe04
51
голос
1
ответ
Любые черты типа могут помочь преобразовать тип кортежа l-value в тип кортежа значений. Например, преобразуйте std::tuple<int&, double&> в std::tuple<int, double> , удалив ссылки.
5 дней, 13 часов назад user1899020
64
голоса
1
ответ
Есть ли способ инкапсулировать тип в класс шаблона (сродни чему-то вроде std::optional ), который имеет все необходимые специальные конструкторы и операторы присваивания (например, copy ctor/assign...
6 дней, 14 часов назад AUD_FOR_IUV
88
голосов
1
ответ
Имея следующий фрагмент кода: #include <iostream> #include <type_traits> template <typename F, typename = typename std::enable_if< std::is_function< F >::value >::type>...
6 дней, 14 часов назад Patryk
73
голоса
1
ответ
У меня есть рабочий код для простого bi_map , двунаправленного класса карты для хранения связанных пар ключ-значение в обоих направлениях. Мое текущее использование: NID - это какой-то числовой иде...
6 дней, 20 часов назад kfmfe04
62
голоса
1
ответ
std::is_trival<T>::value может определить, является ли класс T тривиальным. Однако я не могу придумать сценарий, который нуждается в этой информации. Есть ли примеры? Некоторые мои мысли: Есл...
1 неделя назад xmllmx
123
голоса
1
ответ
Как я могу обнаружить, что функция-член имеет константный модификатор или нет? Рассмотрим код struct A { int member(); int member() const; }; typedef int (A::*PtrToMember)(); typedef int (A::*PtrTo...
1 неделя, 1 день назад Akon
142
голоса
1
ответ
Учитывая типы A,B , меня интересует точное определение std::common_type<A,B> , не учитывая вариационный случай std::common_type<A...> для произвольных типов A... . Итак, пусть using T =...
1 неделя, 1 день назад iavr
81
голос
1
ответ
Пожалуйста, рассмотрите следующий фрагмент кода: template<typename T, class Tuple> class vector { using size_type = typename Tuple::size_type; template<typename... Elements, typename = dec...
1 неделя, 1 день назад 0xbadf00d
51
голос
1
ответ
Данную struct outer { struct inner { }; } struct outer { struct inner { }; } , Я хочу вывести внешний тип из параметра, имеющего внутренний тип: template <typename T> void f(T t) { ... } f(ou...
1 неделя, 2 дня назад ThomasMcLeod
-4
голоса
1
ответ
Пожалуйста, рассмотрите следующий фрагмент кода: template<class E> class vector_expression {}; template<class Tuple> class vector : public vector_expression<vector<Tuple>> {...
1 неделя, 2 дня назад 0xbadf00d
117
голосов
1
ответ
Я столкнулся с очень странной ошибкой компилятора. По какой-то причине опубликованный код правильно компилируется с g++ (7.3.0), в то время как clang (7.0.0) дает сбой: ../TemplateAlias/main.cpp:64...
1 неделя, 3 дня назад srohmen
104
голоса
1
ответ
Я работаю над настраиваемой библиотекой сериализации с настраиваемыми шаблонами. Я хочу иметь возможность обнаруживать и применять концепт Serializer в моей библиотеке с помощью SFINAE (у меня нет ...
1 неделя, 4 дня назад Zeenobit
166
голосов
1
ответ
Обратите внимание, что я использую std::thread только для получения читаемых типов в ошибках: int main() { const int * first; using deref = decltype(*first); std::thread s = std::remove_const<de...
1 неделя, 4 дня назад NoSenseEtAl
62
голоса
1
ответ
Я ищу создать общий контейнер данных вершин с сильной типизацией с использованием шаблонов. Частичный интерфейс будет выглядеть так: template <VertexFormat VF> class VertexData { public: temp...
1 неделя, 4 дня назад Camille
51
голос
1
ответ
Недавно я столкнулся с некоторыми ошибками компилятора, которые сводятся к следующему фиктивному примеру. В основном я создаю шаблон функции "плюс2", который я хочу, чтобы он работал только с int и...
1 неделя, 5 дней назад AndreasBVB
126
голосов
1
ответ
Учитывая cppreference и текущий c++ рабочий проект, класс тривиально можно копировать, если: Каждый конструктор копирования тривиально или удален Каждый конструктор перемещения тривиален или удален...
1 неделя, 5 дней назад phön
84
голоса
1
ответ
Чтение связанных вопросов "Как вызвать функцию-член только в том случае, если объект имеет его?" и "Можно ли написать шаблон C++ для проверки с
1 неделя, 5 дней назад senseiwa
73
голоса
1
ответ
Играя с вариативными шаблонами, я создал функции, которые суммируют элементы. Он работает хорошо, но я хотел добавить тест type_trait, чтобы проверить, являются ли все аргументы числовыми. Он работ...
1 неделя, 6 дней назад Nix
73
голоса
1
ответ
Сначала я изучал параметры шаблона шаблона, и я начал задаваться вопросом, был ли у меня vector<vector<int>> , если бы я мог создать шаблон, который извлекает из него тип int . Но, пыта...
1 неделя, 6 дней назад Steven Lu
106
голосов
1
ответ
(например, получить std::list из std::list<some_value_type> ) Рассмотрим следующий код: #include <list> #include <string> std::string combine(int val, std::string str) { return st...
1 неделя, 6 дней назад GuyGizmo
106
голосов
1
ответ
Я пытаюсь заставить это работать: template<class Type> typename boost::enable_if< boost::mpl::or_< boost::is_arithmetic<Type>, is_string<Type> > >::type get(const std:...
2 недели назад Syffys
Чтобы , пожалуйста,
Выберите тему жалобы:

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