4
한다고 가정 할 특성을 나는 다음과 같은 템플릿이 있습니다 때문에이 소멸자의 부분 템플릿 특수화는
template <typename T> union example {
T t;
constexpr example(const T & t) : t(t) {};
/* We rely on owning class to take care
* of destructing the active member */
~example() {};
};
이
example<T>
이 하찮게 파괴 없을 것 (예를 들어, 이렇게하지, 리터럴 유형). 내가 경고 (가늠자에, 합리적인)
T
이지만, 불행하게도 그 날에게 제공 할 때
example<T>
이 하찮게 파괴 될 수 있도록
template <typename T> union
example<std::enable_if_t<std::is_trivially_destructible<T>::value, T>> {
T t;
constexpr example(const T & t) : t(t) {};
};
같은 부분 전문성을 가지고 같은 을 거라고
경고 : 클래스 템플릿 부분 전문화에는 추론 할 수없는 템플릿 매개 변수가 포함되어 있습니다. 이 부분 전문화는 결코 사용되지 않을 것입니다
그래서 내가 원하는 것을 얻을 수있는 방법이 있습니까?
왜 명시 적으로 dtor를 써야합니까? 그럴 수 없습니까? (또는 암시 적 정의가 삭제되면 가능하지 않습니까?) – dyp
아아, '= default'는 적어도'clang 3.4 '에서'T '가 사소한 파괴적이지 않으면 삭제 된 소멸자를 설정합니다. –
@dyp : 그것은 노조에는 의미가 없습니다. 9.5/2 참조 : 소멸자는 사용자가 제공해야합니다. –