#include template struct Pack {}; int main() { // replace no doubles with void { using Input = Pack; using Answer = Pack; using Output = typename Replace::type; static_assert( std::is_same_v ); } // Replace one float with double { using Input = Pack; using Answer = Pack; using Output = typename Replace::type; static_assert( std::is_same_v ); } // Replace multiple floats with doubles { using Input = Pack; using Answer = Pack; using Output = typename Replace::type; static_assert( std::is_same_v ); } // Replace multiple ints with float { using Input = Pack; using Answer = Pack; using Output = typename Replace::type; static_assert( std::is_same_v ); } }