// Copyright (c) ONNX Project Contributors // // SPDX-License-Identifier: Apache-2.0 #pragma once #include #include namespace ONNX_NAMESPACE { using std::stoi; using std::to_string; inline void MakeStringInternal(std::stringstream& /*ss*/) {} template inline void MakeStringInternal(std::stringstream& ss, const T& t) { ss << t; } template inline void MakeStringInternal(std::stringstream& ss, const T& t, const Args&... args) { MakeStringInternal(ss, t); MakeStringInternal(ss, args...); } template std::string MakeString(const Args&... args) { std::stringstream ss; MakeStringInternal(ss, args...); return std::string(ss.str()); } // Specializations for already-a-string types. template <> inline std::string MakeString(const std::string& str) { return str; } inline std::string MakeString(const char* c_str) { return std::string(c_str); } } // namespace ONNX_NAMESPACE