Запитання з тегом «sfinae»

27
Запропоновано перевірити наявність функції члена класу?
Чи можна написати шаблон, який змінює поведінку залежно від того, чи визначена певна функція члена в класі? Ось простий приклад того, що я хотів би написати: template<class T> std::string optionalToString(T* obj) { if (FUNCTION_EXISTS(T->toString)) return obj->toString(); else return "toString not defined"; } Отже, якщо class Tвін toString()визначив, то він його …

28
Як я можу додати роздуми до програми C ++?
Я хотів би мати можливість ознайомити клас C ++ щодо його імені, вмісту (тобто членів та їх типів) і т. Д. Я тут говорю на рідному C ++, не керованому C ++, який має відображення. Я розумію, що C ++ постачає обмежену інформацію за допомогою RTTI. Які додаткові бібліотеки (або …

3
Чому я повинен уникати std :: enable_if у підписах функції
Скотт Майєрс опублікував зміст та статус своєї наступної книги EC ++ 11. Він написав, що одним із пунктів у книзі може бути "Уникати std::enable_ifфункціональних підписів" . std::enable_if може використовуватися як аргумент функції, як тип повернення або як шаблон шаблону або параметр шаблону функції для умовного видалення функцій або класів із …

2
Як працює `void_t`
Я спостерігав, як Уолтер Браун розмовляв на Cppcon14 про сучасне шаблонне програмування ( частина I , частина II ), де він представив свою void_tтехніку SFINAE. Приклад: Дано простий шаблон змінної, який оцінює, voidчи всі аргументи шаблону добре сформовані: template< class ... > using void_t = void; та наступна ознака, яка …
149 c++  templates  c++14  sfinae 

16
Перевірте, чи клас має функцію-член для даної підпису
Я прошу шаблонний трюк, щоб визначити, чи клас має певну функцію члена даної підпису. Проблема схожа на ту, що цитується тут http://www.gotw.ca/gotw/071.htm але не та сама: у статті книги Саттера він відповів на запитання, що клас C ОБОВ'ЯЗКОВО БЕЗПЕЧИТИ функцію члена з певний підпис, інакше програма не збирається. У своїй …
135 c++  c++11  templates  sfinae 

9
Приклади C ++ SFINAE?
Я хочу потрапити на більше мета-програмування шаблонів. Я знаю, що SFINAE розшифровується як «заміна заміни - це не помилка». Але чи може хтось показати мені корисну користь для SFINAE?

2
Як реалізується std :: is_function?
Як здійснюється наступна реалізація std::is_function? template<class T> struct is_function : std::integral_constant< bool, !std::is_const<const T>::value && !std::is_reference<T>::value > {}; (із довідки CPP ) Мені здається, intфункція під цим визначенням була б функцією. Що я пропускаю?
82 c++  templates  std  sfinae 

2
Підходи до функціонування SFINAE в C ++
Я активно використовую функцію SFINAE в проекті і не впевнений, чи є якісь відмінності між наступними двома підходами (крім стилю): #include <cstdlib> #include <type_traits> #include <iostream> template <class T, class = std::enable_if_t<std::is_same_v<T, int>>> void foo() { std::cout << "method 1" << std::endl; } template <class T, std::enable_if_t<std::is_same_v<T, double>>* = 0> …
40 c++  sfinae 
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.