sfinae

У меня есть несколько классов. Сейчас они разделены одним символом. Немногие из них содержат type (a typedef), и немногие из них не имеют его. struct A { ... public: typedef someclass type; } struct B { ... }; Я хочу реализовать класс SFINAE таким образом, что Resolve<A>::type o1; // should resolv...

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

Я пытаюсь получить тип, на который указывает typedef, из класса (ValueType typedef), который я определил. Однако, когда это не удается, я хочу, чтобы он вернул заданный тип (например, если я дам ему double, я хочу, чтобы он вернул double). Вот что у меня есть до сих пор: struct myClass { typedef double Va...

Рассмотрим следующий код: #include <iostream> #include <type_traits> template <typename T> struct A { int val = 0; template <class = typename std::enable_if<T::value>::type> A(int n) : val(n) {}; A(...) { } /* ... */ }; struct YES { constexpr static bool...

Мне трудно понять этот фрагмент кода, который использует SFINAE. template <typename T> auto dist() -> typename std::enable_if<std::is_integral<T>::value, std::uniform_int_distribution<T>>::type; template <typename T> auto dist() -> ...

Я хотел бы специализировать getVector функцию-член, я пытаюсь использовать SFINAE для этого. Но это работает только в том случае, если Dim равен 3 или больше. template <size_t Dim> class Mat { ... template <size_t VDim, typename enable_if<(Dim > 1 && VDim == 0)>::type* = nul...

можно ли написать шаблон, который изменяет поведение в зависимости от того, определена ли определенная функция-член в классе? вот простой пример того, что я хотел написать: template<class T> std::string optionalToString(T* obj) { if (FUNCTION_EXISTS(T->toString)) return obj->toString...

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

At http://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx, команда VC++ официально заявляет, что они еще не реализовали основную функцию C++11 "Expression SFINAE". Однако следующие примеры кода скопированы из http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2634.html принимаются компилятором...

я нашел код здесь это выглядело примерно так: auto f(T& t, size_t n) -> decltype(t.reserve(n), void()) { .. } во всей документации, которую я читал, мне сказали, что decltype подписан как: decltype( entity ) или decltype( expression ) и нигде нет второго аргумента. По крайней мере, это т...