Вы можете довольно легко упростить это, по крайней мере, немного, хотя это не намного короче.
void print(char const *data, uint32_t) { std::cout << data << ", uint32_t\n"; }
template <class T>
void print(char const *data, T length) { std::cout << data << "\n"; }
template <class size_type = uint16_t>
class package
{
public:
package(char const *data, size_type size) { print(data, size); }
};
На данный момент я изменил его на использование char *
, и обе функции выполняют мало печати, поэтому легко протестировать и проверить, как это работает:
int main() {
package<uint32_t> m("input", 1234);
package<uint16_t> n("more input", 1234);
}
Результат:
input, uint32_t
more input