
성불
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | #include <string> #include <iostream> #include <type_traits> namespace Interface { class IFormattable { public: virtual std::string to_string() { return "PlaceHolder String"; }; }; } namespace concepts { template <typename Type> concept Fundamental = std::is_fundamental<Type>::value; template <typename Type> concept Formattable = std::is_base_of<Interface::IFormattable, Type>::value; } namespace misc { template <concepts::Fundamental _Type> std::string to_string(_Type data) { return std::to_string(data); } template <concepts::Formattable _Type> std::string to_string(_Type data) { return data.to_string(); } } class custom_str : Interface::IFormattable { public: custom_str(std::string str) { value = str; } virtual std::string to_string() { return ("custom string " + value); }; private: std::string value; }; int main() { std::cout << misc::to_string(100) << "\n"; std::cout << misc::to_string(custom_str("Asdf")) << "\n"; return 0; } | cs |