0
다음 코드가 주어지면 Boost hana와 동일한 기능을 표현하는 적절한 방법은 무엇입니까?boost :: hana를 사용하는 SFINAE 템플릿 생성자
#include <type_traits>
#include <boost/hana/type.hpp>
#include <boost/hana/core/when.hpp>
namespace hana = boost::hana;
struct S {
template<
typename T,
typename = typename std::enable_if_t< (T::value) > > // <-- equivalent?
S (const T&) { }
};
struct X { static constexpr int value = 0; };
struct Y { static constexpr int value = 1; };
int main() {
S a (X { }); // <-- must fail
S b (Y { });
return 0;
}
when
에 대한 문서는 enable_if
를 대체 그것을 언급하지만 난이 상황에 적용하는 방법을 잘 모르겠습니다. 그렇다면 Boost 기능을 사용하여 템플릿 생성자를 선택적으로 활성화하려면 어떻게해야합니까?
'hana :: when'은 부분 특수화를 활성화하는 것에 관한 것입니다. – Barry
@Barry : 맞습니다. 내가 찾고있는 것은 일반 enable_if를 간결한 하나의 주문으로 대체하는 영리한 방법입니다. – Engineerist