enable-if

Я только что пробежался по ключевому слову C++ requires и хочу знать, правильно ли мое понимание: оба requires и enable_if предлагают ограничения времени компиляции для шаблонов. Если требуют ограничения будут включены вообще. Где требует предлагает способ ограничения параметров функции, enable_if имеет ...

В настоящее время я пишу арифметические перегрузки операторов для кортежей. Оператор перебирает кортеж, чтобы выполнить операцию над каждым его отдельным элементом. Вот определение оператора +=: template< typename... Ts, std::size_t I = 0 > inline typename std::enable_if< I == sizeof... (Ts), std::...

Просто короткий вопрос, заданный функцией, в которой я хочу вернуть базовый тип enum class: Почему эта версия работает нормально template<typename T> constexpr inline typename std::enable_if_t< std::is_enum<T>::value, typename std::underlying_type_t<T> > enumValue(T p_rVal) noex...

Дву: смотрите последний абзац. У меня есть operator&, определенный для нескольких классов шаблонов, таких как: template <typename T> struct Class { Class(T const &t) { } }; template <typename T_Lhs, typename T_Rhs> struct ClassAnd { ClassAnd(T_Lhs const &lhs, T_Rhs const &a...

Почему это не компилируется с gcc48 и clang32? #include <type_traits> template <int N> struct S { template<class T> typename std::enable_if<N==1, int>::type f(T t) {return 1;}; template<class T> typename std::enable_if<N!=1, int>::type f(T t) ...

Я хотел бы спросить вас о некоторых советах относительно этого кода. Это работает, но я думаю, что это может быть написано более элегантным способом. Это часть кода C++11, так что имейте это в виду, когда вы его компилируете;)! #include <iostream> #include <type_traits> #include <typeinfo> ...

Итак, у меня есть класс, который имеет массив массивов в качестве частного члена. Я хочу иметь два конструктора для каждого случая (1D или 2D). Но, конечно, их декларации совпадают, так что шаблонная дедукция не может делать свою работу без меня. Вот код: Edit: мне также нужно, чтобы он работал с контейнера...

У меня есть некоторые проблемы с объявлением функции, которая использует boost::enable_if: следующий фрагмент кода выдает ошибку компилятора: // Declaration template <typename T> void foo(T t); // Definition template <typename T> typename boost::enable_if<boost::is_same<T, int> >::t...

Scott Meyers posted содержание и статус из его следующей книги EC++11. Он написал, что один пункт в книге может быть "не std::enable_if в функции подписи". std::enable_if может использоваться как аргумент функции, как тип возвращаемого значения или как шаблон класса или параметр шаблона функции для условного...