typetraits

Является ли следующий шаблон кода разумным при использовании признаков в шаблонном коде, где обе альтернативные реализации всегда компилируемы? Чтение кода кажется более ясным, чем выполнение других трюков для условной компиляции (но тогда, возможно, я просто недостаточно знаком с этими трюками). template&l...

Я пытаюсь найти, является ли лямбда или свободная функция const с помощью метапрограммирования C++14. Моя текущая стратегия заключается в использовании std::is_reference, std::is_pointer и std::is_const по каждому из аргументов. (В настоящее время игнорируются глобальные переменные...) Таким образом, объек...

У меня есть шаблон класса, который принимает тип T. У него есть метод. Я хочу, чтобы этот метод возвращал тип T, если это const и T&, Если это неconst. template<typename T> class C { static typename add_reference_if_non_const<T>::type method(); }; int main() { assert( is_same<resu...

template<typename T> struct foo { T* p; foo(T* x) : p(x) {} ~foo() { if(p) delete p; } T& operator*() const { return *p; } }; int main() { foo<int> i(new int); foo<void> v(new int); // <= illegal use of type 'void' } Если T = void, то я не хочу реализовыв...

Это продолжение std:: unordered_map > можно скопировать? Ошибка GCC? Итак, представьте, что мы создали класс шаблонов Container: template<class T> class Container { T t; public: Container() = default; Container(const Container& other) : t(other.t) {} }; К сожалению, is_copy_cons...

Признак в C++ инкапсулирует семейство операций, которые позволяют алгоритму или структуре данных работать с тем типом, с которым он создан. char_traits являются примером группировки string-и файл-обязательных функций. Но не все признаки имеют "признак" в своем названии, верно? numeric_limits приходит на ум....

В C++ кто-то может написать следующий фрагмент кода: #include <type_traits> template <typename Type1, typename Type2> bool TestArgumentTypesOnEquality(Type1 argument1, Type2 argument2) { return std::is_same<Type1, Type2>::value; } std::is_same шаблон класса проверяет, равны ли Type1...

Можно ли написать частичную специализацию шаблона, которая используется только для типов классов, которые, например, наследуются от определенного класса или соответствуют некоторому другому ограничению, которое может быть выражено через признаки типа? то есть, что-то вроде этого: class A{} class B : publi...

в терминах непрофессионала, в чем разница между тривиальными типами, стандартными типами компоновки и стручками? в частности, я хочу определить, является ли new T отличается от new T() для любого параметра шаблона T. Какая из черт типа is_trivial,is_standard_layout и is_pod должен ли я выбрать? (как побочны...

Я видел, что для того, чтобы проверить, если тип T это класс, который я могу использовать: bool isClass = std::is_class<T>::value; возвращает true для обоих классов и структур. Я знаю, что в C++ они почти одно и то же, но я хотел бы знать, почему нет различия между ними в черте типа. Всегда ли беспол...