«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를 피해야하는 이유
Scott Meyers는 다음 책 EC ++ 11의 내용과 상태 를 게시 했습니다. 그는이 책의 한 항목은 " std::enable_if기능 서명을 피하십시오 "라고 썼다 . std::enable_if 함수 인수, 반환 형식 또는 클래스 템플릿 또는 함수 템플릿 매개 변수로 사용하여 오버로드 확인에서 함수 또는 클래스를 조건부로 제거 할 수 있습니다. 이 질문 에는 …

2
`void_t`는 어떻게 작동합니까
나는 Cppcon14에서 Walter Brown이 SFINAE 기술 을 발표 한 최신 템플릿 프로그래밍 ( Part I , Part II ) 에 대해 이야기하는 것을 보았다 void_t. 예 : 모든 템플릿 인수가 올바른지 평가하는 간단한 변수 템플릿이 제공됩니다 void. template< class ... > using void_t = void; 그리고 member라는 멤버 변수가 있는지 …
149 c++  templates  c++14  sfinae 

16
클래스에 주어진 서명의 멤버 함수가 있는지 확인
클래스에 주어진 서명의 특정 멤버 함수가 있는지 감지하기 위해 템플릿 트릭을 요청하고 있습니다. 문제는 여기 http://www.gotw.ca/gotw/071.htm에 인용 된 것과 유사 하지만 동일하지는 않습니다. Sutter의 책에서 그는 클래스 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
C ++에서 SFINAE 기능에 접근
프로젝트에서 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> void foo() { …
40 c++  sfinae 
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.