クラステンプレートのテンプレート引数推論が入ったので false的なものを受け取ると例外を投げるクラスを書いてみた

C++17で [https://cpprefjp.github.io/lang/cpp17/type_deduction_for_class_templates.html:title=クラステンプレートのテンプレート引数推論が入ったので
コンストラクタでfalse的なものを受け取ると例外を投げるクラスを書いてみた

使用想定

テストなどで、注目度の低いエラー処理を雑に処理する

std::optional<Foo> make(int arg);

Test(Foo_f_test_)
{
      // makeは成功する前提で書いてる+makeは別のテストでしているので  このテストでmakeのエラー処理はあまり書きたくない
      // 万が一makeが失敗した場合、noneを受け取ったFactのコンストラクタがこのテストを失敗させる
    Fact a = make(42);

    ASSERT_EQ(a->f(13) == false);       // このテストの主要部
}

実装

template<class T>
class Fact :public T{
public:
    Fact(T const&val):T(val) {
        if (! val) {
            throw std::runtime_error("hoge");
        }
    }
};