Pytania otagowane jako sfinae

27
Szablonowe sprawdzenie, czy istnieje funkcja członka klasy?
Czy można napisać szablon, który zmienia zachowanie w zależności od tego, czy określona funkcja elementu jest zdefiniowana w klasie? Oto prosty przykład tego, co chciałbym napisać: template<class T> std::string optionalToString(T* obj) { if (FUNCTION_EXISTS(T->toString)) return obj->toString(); else return "toString not defined"; } Tak więc, jeśli class Tzostał toString()zdefiniowany, to korzysta …

28
Jak mogę dodać odbicie do aplikacji C ++?
Chciałbym mieć możliwość introspekcji klasy C ++ pod kątem jej nazwy, zawartości (tj. Członków i ich typów) itp. Mówię tutaj o natywnym C ++, nie zarządzanym C ++, który ma odbicie. Zdaję sobie sprawę, że C ++ dostarcza pewne ograniczone informacje za pomocą RTTI. Jakie dodatkowe biblioteki (lub inne techniki) …


2
Jak działa „void_t”
Oglądałem wykład Waltera Browna na Cppcon14 o nowoczesnym programowaniu szablonów ( część I , część II ), gdzie przedstawił swoją void_ttechnikę SFINAE. Przykład: biorąc pod uwagę prosty szablon zmiennej, który ocenia, voidczy wszystkie argumenty szablonu są poprawnie sformułowane: template< class ... > using void_t = void; oraz następującą cechę, która …
149 c++  templates  c++14  sfinae 

17
Sprawdź, czy klasa ma funkcję składową o danym sygnaturze
Proszę o sztuczkę szablonową, aby wykryć, czy klasa ma określoną funkcję członkowską danego podpisu. Problem jest podobny do tego cytowanego tutaj http://www.gotw.ca/gotw/071.htm, ale nie ten sam: w pozycji książki Suttera odpowiedział na pytanie, że klasa C MUSI ZAPEWNIĆ funkcję składową z konkretny podpis, w przeciwnym razie program się nie skompiluje. …
139 c++  c++11  templates  sfinae 


2
Jak wdrażana jest funkcja std :: is_function?
Jak wygląda implementacja std::is_function? template<class T> struct is_function : std::integral_constant< bool, !std::is_const<const T>::value && !std::is_reference<T>::value > {}; (z referencji CPP ) Wydaje mi się, intże w tej definicji byłaby funkcja. czego mi brakuje?
82 c++  templates  std  sfinae 

2
Podejścia do działania SFINAE w C ++
Używam mocno funkcji SFINAE w projekcie i nie jestem pewien, czy istnieją jakieś różnice między następującymi dwoma podejściami (innymi niż styl): #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>>* = …
40 c++  sfinae 
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.