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

Как я могу узнать, создан ли тип внутри пространства имен?
Я создал систему тегов, которая позволяет использовать теги в движке ma. Он работает на основе типов C ++, поэтому каждый тег является типом (у меня есть причины). Теперь, когда я хочу создать новый тег, мне нужно вызвать struct tagname{}; ....
138 просмотров
schedule 25.09.2021

Как использовать std :: is_integral ‹› для выбора реализации?
Я пытаюсь вернуть int64_t , если std::is_integral<>::value верно. В противном случае я хотел бы вызвать to_int64t() для объекта. Моя попытка ниже не удалась, потому что частичная специализация шаблонов функций не разрешена. КОД...
9308 просмотров
schedule 23.11.2021

шаблонная функция, которая принимает только строковые или арифметические операции
Я пытаюсь заставить это работать: template<class Type> typename boost::enable_if< boost::mpl::or_< boost::is_arithmetic<Type>, is_string<Type> > >::type get(const std::string &argPath, const Type &argDefault)...
177 просмотров
schedule 28.09.2021

Получить тип неявного преобразования
Как я могу получить возвращаемый тип неявного преобразования объекта? struct Bar { operator int() const { return 0; } }; // std::result_of<Bar>::type value; ??? // std::result_of<Bar::operator ??? >::type value; Я мог бы...
116 просмотров
schedule 09.09.2021

Найдите первый базовый примитив в структуре / классе
Помещение: У меня есть вариативная функция шаблона, которая принимает POD (простая старая структура данных) с однородными типами членов. Приемлемый POD может полностью состоять из 4-байтовых целых чисел XOR с 4-байтовыми числами с плавающей...
58 просмотров
schedule 03.12.2021

подписанный int vs int - есть ли способ отличить их в C ++?
Есть ли шаблон или подход, который можно было бы использовать, чтобы различать объявления signed int и int , как в следующем примере signed int foo; int bar; static_assert(magic_signed<decltype(foo)>::value,"signed"); //PASS...
246 просмотров
schedule 28.11.2021

Проверьте, доступна ли статическая функция в классе во время компиляции
В настоящее время я подключаю приложение, которое имеет несколько реализаций для одной цели. Во время выполнения проверяется, можно ли использовать соответствующую реализацию или использовать запасной вариант. Для этого я хочу, чтобы все...
220 просмотров
schedule 17.09.2021

целочисленные признаки (is_integer, is_integral)
Мне нужны две черты, касающиеся целых чисел. Первый будет похож на std::is_integral (или boost::is_integral ), но его можно использовать с определенными пользователем типами (например, класс, обертывающий int , скажем, int_wrapper ): true,...
1564 просмотров
schedule 22.02.2022

шаблон псевдонима не является шаблоном класса?
Я пытаюсь написать черту типа, чтобы определить, есть ли у типа T::type определенного типа. Я использую код из этого ответа . Для справки это часть кода, который я использую: // See...
59 просмотров
schedule 24.02.2022

Разница между char и signed char в с ++?
Рассмотрим следующий код: #include <iostream> #include <type_traits> int main(int argc, char* argv[]) { std::cout<<"std::is_same<int, int>::value = "<<std::is_same<int, int>::value<<std::endl;...
18895 просмотров
schedule 11.03.2022

decltype(*this) эквивалентное внешнее тело функции
Можно ли написать трейт, результатом которого будет тип класса, в котором он используется? Как реализовать get_class в примере ниже? class Foo { typedef get_class::type type; // type = Foo now }; Примечание. Мне нужно написать макрос,...
678 просмотров
schedule 17.03.2022

Как сделать комбинатор Y на основе SFINAE в С++?
Я думал о неявных шаблонах C++14 и пытаюсь объявить функцию, соответствующую определенному типу аргумента (SFINAE и трейты до сих пор вызывают у меня головную боль). Я не знаю, как объяснить, чего я хочу, но я пытаюсь сделать Y комбинатор...
455 просмотров
schedule 20.03.2022

проверить наличие члена в C ++
Возможный дубликат: SFINAE для проверки унаследованных функции-члены Я хочу выполнить проверку во время компиляции, существует ли конкретный член в классе. Я нашел несколько таких решений: Можно ли написать шаблон для проверки...
452 просмотров
schedule 07.04.2022

Вывод типа шаблона не работает?
Рассмотрим следующий пример. #include <type_traits> #include <iostream> using namespace std; template <typename T_> using Integral = typename std::enable_if<std::is_integral<T_>::value,T_>::type; template...
286 просмотров

Наследование (или членство) признаков идиома
Классы всеобъемлющих признаков, такие как std::iterator_traits , полезны тем, что отделяют свойства типа от его определения, поэтому, например, свойства могут быть доступны до того, как определение будет завершено. Определение трейтов в дополнение...
241 просмотров
schedule 21.05.2022

Как использовать std::enable_if с типом возвращаемого значения?
C++14 будет иметь функции, тип возвращаемого значения которых можно вывести на основе возвращаемое значение. auto function(){ return "hello world"; } Могу ли я применить это поведение к функциям, которые используют enable_if для...
9120 просмотров

Итерация по коллекции различных типов в C++
Ситуация У меня есть класс шаблона TIppImage<T> для изображения типа T . У меня есть одноэлементный класс CIppMemoryManager , который может хранить несколько изображений разного размера и типа. class CIppMemoryManager { public:...
1873 просмотров

C++: используйте #if std::is_fundamental‹T›::value для условной компиляции в MSVC 2010
В моем шаблоне мне нужно иметь разные части кода в зависимости от того, является ли имя типа фундаментальным типом или нет. Компиляция этого кода дает C4067 в MSVC (неожиданные токены после директивы препроцессора - ожидается новая строка):...
1105 просмотров
schedule 05.06.2022

Как написать метод типовой черты
Я определил шаблонный класс ( DataArray<T> ) и хочу определить функцию min() для вычисления минимального значения массива целочисленного типа ( double , float , int ,...) или массива сложного типа ( std::complex<double> ,...
125 просмотров
schedule 05.06.2022

std::is_same не работает через decltype автоматической переменной constexpr
Я пытался static_assert убедиться, что какой-то алгоритм метапреобразователя работает, и он невероятно не похож на тот же самый, хотя typeid().name() возвращает ту же самую строку. Повторение выражения типа в typedef могло бы исправить is_same...
794 просмотров
schedule 06.06.2022