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

53
голоса
1
ответ
Я пишу класс в С++ 17, который я хотел бы оператор преобразования перегрузки для плавающих типов, а также для некоторых пользовательских типов. Вот воспроизводимый пример. Есть еще много преобразов...
2 дня, 22 часа назад Imran
95
голосов
1
ответ
Я хотел бы написать конструктор для MyClass , который принимает аргумент, и я хочу, чтобы это было скомпилировано, только если аргумент pointer или iterator (что-то имеет iterator_traits ). Как дос...
3 дня, 3 часа назад Vincent
73
голоса
1
ответ
У меня есть класс шаблонов, который выглядит так: template <typename T> constexpr bool is_value_passable_v = is_trivially_copyable_v<T> && sizeof(T) <= sizeof(void*) &&am...
3 дня, 21 час назад Uroc327
74
голоса
1
ответ
Я пытаюсь написать функцию, которая позволила бы мне запустить первое допустимое выражение из списка выражений, некоторые из которых потенциально недействительны. Это означает, что , например , доп...
3 дня, 22 часа назад SU3
74
голоса
1
ответ
Я пытаюсь написать простой протокол сериализации. send для типа контейнера должна вызывать send по каждому из элементов (которые сами могут быть типами контейнеров). Однако я не могу понять, как эт...
3 дня, 23 часа назад charmoniumQ
102
голоса
1
ответ
Можно ли скрыть некоторые функции-члены в классе шаблона? Представьте себе, что у нас есть что-то вроде: template <class T> class Increment { public: void init(T initValue) { mValue = initVal...
3 дня, 23 часа назад Marda
53
голоса
1
ответ
Я пытаюсь создать класс, который имеет 3 возможных варианта реализации метода шаблона, в зависимости от типа шаблона, состоящего из одного из трех "наборов типов". Кроме того, я пытаюсь сохранить э...
4 дня, 1 час назад SaldaVonSchwartz
51
голос
1
ответ
В очень простой ситуации с ограниченным конструктором, проверяющим конвертируемость аргумента, ошибка возникает в clang, но не в g++: #include <type_traits> template <class T, class U> ...
4 дня, 2 часа назад spraetor
75
голосов
1
ответ
Я хотел бы, чтобы определение конструктора по умолчанию было переключено во время компиляции с помощью параметра шаблона. Я могу получить это, чтобы скомпилировать OK для конструктора преобразовани...
4 дня, 4 часа назад Signifying Nothing
62
голоса
1
ответ
Мой вопрос заключается в расширении этого вопроса: как использовать sfinae для выбора конструкторов? В предыдущем вопросе, апеллятор просто хотел выборочно включить один конструктор. Я хотел бы изм...
4 дня, 22 часа назад user1476176
73
голоса
1
ответ
Как создать класс шаблона, который может понять, если тип T hashable или нет, и если он затем использует std::unodered_set для сбора элементов типа T?. В противном случае я хочу использовать std::s...
5 дней назад InFamous X
52
голоса
1
ответ
Я упростил решение здесь, чтобы помочь мне определить, имеет ли класс функцию-член: template<typename T> struct HasTest{ template<typename R, typename S = decltype(declval<R>().test(...
5 дней, 1 час назад Jonathan Mee
88
голосов
1
ответ
Я пытался понять SFINAE и пытался написать простой перегруженный оператор <<, который вызовет метод print для любого класса, который содержит такой метод. Я прочитал ответы на вопрос. Можно л...
5 дней, 2 часа назад Chris Dodd
113
голосов
1
ответ
Я хотел бы проверить, существует ли определенная специализация шаблона или нет, где общий случай не определен. Дано: template <typename T> struct A; // general definition not defined template...
5 дней, 2 часа назад Fabio
138
голосов
1
ответ
У меня возникла проблема с выводом типа одного элемента массива С++. Я хотел бы сделать что-то вроде: template <class T> struct array_element { }; template <class T> struct array_elemen...
5 дней, 23 часа назад W.F.
89
голосов
1
ответ
Я не могу понять второй представленный сценарий здесь . В нем говорится: • Сценарий 2: добавление параметра функции, который имеет аргумент по умолчанию: template <your_stuff> your_return_typ...
6 дней назад Oz Le
74
голоса
1
ответ
У меня есть следующий код в С++: struct A; struct B { B(){} template<typename T> B(T param){} }; Я хочу, чтобы шаблон конструктора был действительным только тогда, когда имя типа T можно прео...
6 дней, 23 часа назад Raul Alonso
72
голоса
1
ответ
Я хочу автоматически выбирать правильный указатель-член среди перегруженных на основе "типа" члена, удаляя специализации, которые принимают незаинтересованных членов (через enable_if). У меня есть ...
1 неделя назад Synxis
72
голоса
1
ответ
Я решил попробовать свои силы в немного Код ошибки замены не является ошибкой (SFINAE), чтобы проверить, если глобальный operator<< определяется для настраиваемого типа. Вопрос о переполнении
1 неделя назад McKay.CPP
62
голоса
1
ответ
, #include <iostream> #include <type_traits> using namespace std; template<typename T> struct MyClass{ void hello( void) { hello(std::is_same<T,bool>()); } void hello(std::t...
1 неделя назад user2709349
110
голосов
1
ответ
Я хочу выбрать реализацию функции-члена (конструктор копирования) на основе значения аргумента шаблона. Я предполагаю, что существуют два подхода: SFINAE и частная специализация шаблонов. Последний...
1 неделя назад Alexander Sergeev
80
голосов
1
ответ
У меня такой код: template<class TABLELOADER = void> class DiskFileFlush{ TABLELOADER *_loader; public: void process(){ // I want to call this, // only if loader->refresh() exists. notifyL...
1 неделя, 2 дня назад Nick
51
голос
1
ответ
Похоже, что сбой замены иногда является ошибкой. Может ли кто-нибудь сказать мне, когда это будет ошибка, а когда нет? См. Результат выполнения здесь. Спасибо! Спасибо за информативный ответ! Этот ...
1 неделя, 2 дня назад yufanyufan
51
голос
1
ответ
В следующем (академически построенном, неработающем) коде есть две "проблемы", которые я знаю, как безобразно решить. Я хотел бы красивую. #include <type_traits> template<class T> struc...
1 неделя, 2 дня назад R. Absil
81
голос
1
ответ
У меня есть класс, Jav :: String, который я использую шаблоны. class String { String(); String(std::size_t); template <class ITER_WRAP> String(const ITER_WRAP &iterator_begin_end); } Я ож...
1 неделя, 2 дня назад Javene CPP McGowan
53
голоса
1
ответ
Я хочу создать конструкторы для класса таким образом, чтобы компилятор тривиально создавал новые экземпляры, когда это необходимо. Вот пример. class C { public: C(int) {}; // int constructor }; Есл...
1 неделя, 3 дня назад almosnow
62
голоса
1
ответ
Следующий код snipplet пытается реализовать 'std :: is_constructible <A, int>': #include <type_traits> struct A { // A(int); }; template< typename T > struct cstr_int { static int...
1 неделя, 3 дня назад Andreas Florath
52
голоса
1
ответ
У меня есть следующая шаблонная функция template <typename As, typename std::enable_if< std::is_arithmetic<As>::value, As>::type* = nullptr > As getStringAs(const std::string&...
1 неделя, 3 дня назад eucristian
62
голоса
1
ответ
Каким-то образом я чувствую, что есть несколько ответов на аналогичный вопрос, однако я не смог найти окончательного решения моей проблемы. Итак, мои извинения заранее: у меня много структур сообще...
1 неделя, 3 дня назад rahman
103
голоса
1
ответ
У меня есть такой тип: template<typename T> struct wrapper { using foo = typename T::foo; using bar = typename T::bar; using baz = typename T::baz; // More of those... }; Мне бы хотелось, что...
1 неделя, 3 дня назад Morwenn
74
голоса
1
ответ
Я работаю над проектом, который включает в себя предоставление пользователю возможности находить оптимальные функции произвольного количества аргументов. Внутренне весь механизм построен вокруг std...
1 неделя, 4 дня назад Derrick Turk
81
голос
1
ответ
Пожалуйста, рассмотрите следующий фрагмент кода: template<typename T, class Tuple> class vector { using size_type = typename Tuple::size_type; template<typename... Elements, typename = dec...
1 неделя, 4 дня назад 0xbadf00d
52
голоса
1
ответ
Я не знаю, какие правила следует рассматривать для использования SFINAE для перегрузки метода. Я запускаю несколько раз в проблемах, потому что там, где я знаю, есть больше правил. Поэтому я надеюс...
1 неделя, 4 дня назад Klaus
73
голоса
1
ответ
Я попытался создать класс шаблона, который должен обнаружить любой конструктор, используя SFINAE и вариативные шаблоны. Вот код шаблона: template <typename Type, typename ... Arguments> struc...
1 неделя, 5 дней назад Alexander Bily
89
голосов
1
ответ
Почему этот код (значение fnc в классе M) не разрешается правилами SFINAE? Я получаю сообщение об ошибке: Error 1 error C2039: 'type' : is not a member of 'std::tr1::enable_if<_Test,_Type>' К...
1 неделя, 5 дней назад There is nothing we can do
262
голоса
1
ответ
В http://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx команда VС++ официально заявляет, что еще не реализовала основную функцию С++ 11 "Expression SFINAE". Тем не менее, следующие приме...
1 неделя, 5 дней назад xmllmx
72
голоса
1
ответ
Я встретил decltype() с двумя параметрами в качестве типа возвращаемого значения функции шаблона: template<class C, class F> auto test(C c, F f) -> decltype((void)(c.*f)(), void()) { } Кто...
1 неделя, 5 дней назад mora
163
голоса
1
ответ
Рассмотрим два struct с разными псевдонимами типа элемента: struct foo { using x = int; }; struct bar { using y = float; }; Учитывая T в контексте template , я хочу получить либо T::x , либо T::y в...
1 неделя, 6 дней назад Vittorio Romeo
73
голоса
1
ответ
В настоящее время у меня есть конструктор для класса, который: template<class TX, class TY> MyClass(const TX &x, const TY &y) и позвольте мне построить мой класс на основе 2 значений....
1 неделя, 6 дней назад Vincent
82
голоса
1
ответ
компиляция с GCC я всегда получаю false из следующего кода. Я считаю, что это ошибка компилятора, но кто-то может знать лучше. #include <iostream> template< class T > class has_apply { ...
1 неделя, 6 дней назад Elias
Чтобы , пожалуйста,
Выберите тему жалобы:

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