sfinae

    20

    4답변

    SFINAE을 사용하여 C++에 클래스가 있는지 검색 할 수 있습니까? 가능한 경우 어떻게? 일부 라이브러리 버전에서만 제공되는 클래스가 있다고 가정합니다. SFINAE를 사용하여 클래스가 존재하는지 여부를 감지 할 수 있는지 알고 싶습니다. 검출 결과는 임의적입니다. 예를 들어 enum 상수는 존재하는 경우 1, 그렇지 않으면 0입니다.

    3

    1답변

    나는 현재 클래스의 생성자가 있습니다 template<class TX, class TY> MyClass(const TX &x, const TY &y) 을 나를이 개 값을 기준으로 내 수업을 구성 할 수 있습니다. 나는 C++ 2011 그 형태로는 처음과 같은 일 때문이 마지막 생성자를 수정하는 방법 template<class TG, class TE> M

    1

    1답변

    SFINAE 원리 Visual Studio에서 정말 간단 보이는 작동하지 않습니다 2010 #include <type_traits> #include <iostream> struct MyStruct { int value; MyStruct(int value = 42) : value(value) { } const int& get

    1

    1답변

    SFINAE 원리/enable_if를 사용하여 클래스 템플릿 메서드의 부분 전문화를 "위장"할 수 있는지 궁금합니다. 예를 들어 Foo::bar의 두 가지 버전이 정의 된 클래스 템플릿 Foo이 제공됩니다. 나는 하나를 가능하게하고 T2 = int (예를 들면)과 그 반대의 경우 다른 것을 비활성화하고자합니다. template<typename T1, typ

    5

    3답변

    this one과 비슷한 질문과 대답을 발견했습니다. 그러나 테스트 한 멤버가 테스트중인 클래스에서 직접 정의 된 경우에만이 SFINAE 테스트가 성공했습니다. 예를 들어, 다음은 클래스 B, D1 인쇄 HAS, 나머지 두 개는 NOT HAS입니다. 클래스에 멤버가 있거나 클래스 자체 또는 기본 클래스가 정의되어 있는지,이 경우 기본 클래스의 이름을 알 수

    4

    3답변

    functor가 int를 참조하고 bool을 반환하는 호출 가능한 객체인지 어떻게 테스트 할 수 있습니까? template<typename functor> void foo(functor f) { static_assert('functor == bool (int&)', "error message"); int x = -1; if

    5

    1답변

    SFINAE에 문제가 있습니다. 유형에 멤버 함수가 있는지 여부를 결정할 수 있어야합니다. operator => 반환 유형에 관계없이 정의됩니다. 예제는 다음과 같습니다. 이 클래스는 테스터에 있습니다. X *의 리턴 유형으로 연산자 ->()를 정의합니다. 따라서 나는 어디에서나 'X'가 하드 코드하는 것을 모른다. template <class X> cl

    0

    3답변

    함수 템플릿을 쓰려고합니다. 하나의 버전은 다른 버전의 기준을 충족시키지 못하는 모든 유형에 사용해야합니다. 인수가 주어진 클래스의 기본 클래스이거나 그 클래스 자체 일 때 다른 버전을 사용해야합니다. Base&에 대한 오버로드를 시도했지만, Base에서 클래스가 파생 될 때 특정 클래스가 아닌 일반 클래스를 사용합니다. 나는이 SFINAE 접근 시도 :

    5

    1답변

    내가이 멤버 함수 테스트가 있습니다 template <typename T> struct has_member { template <typename U> static true_type f(decltype(declval<U>().member()) *); template <typename> static false_type f(...);

    0

    2답변

    CRTP 기본 클래스 Generic이 동료, 즉 T도 파생 된 클래스를 식별 할 수 있는지 확인하기 위해 boost::is_base_of을 사용하려고합니다. Generic<T>::init()에 나타낸 바와 같이, I 클래스 Generic<T> 수 있도록하기 위해 이러한 메커니즘을 사용하고자는 맵 기능의 동료 중 하나 Bar1 또는 Bar2가 (있는 T 또한