0
次のコードが与えられた場合、Boost hanaを使用して同じ機能を表現する適切な方法は何ですか? when
ためSFINAE boost :: hanaを使用したテンプレートコンストラクタ
#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;
}
ドキュメントenable_if
の代替としてそれを言及が、私は、この文脈でそれを適用するかどうかはわかりません。だから、Boost hanaを使ってテンプレートコンストラクタを選択的に有効にする方法はありますか?
'hana :: when'は部分的な特殊化を有効にすることについてです。 – Barry
@Barry:そうです、私が探しているのは、簡単なenable_ifをいくつかの簡単なハナの呪文に置き換える(おそらく)賢い方法です。 – Engineerist