#include <string>
template<typename CharT>
class Format
{
public:
typedef std::basic_string<CharT> StringT;
template< typename CharT>
friend Format<CharT> format(const std::basic_string<CharT>& str,std::size_t n);
template< typename CharT>
friend Format<CharT> format(const CharT* str,std::size_t n);
private:
Format(const StringT& str, std::size_t firstArgNumber=0){};
Format(const Format& f){};
Format& operator==(const Format& f){};
};
//----------------------- friend format() -----------------------------------------
template< typename CharT>
Format<CharT> format(const std::basic_string<CharT>& str,std::size_t n=0)
{
return Format<CharT>(str,n);
}
//---------------------------------------------------------------------------------
template< typename CharT>
Format<CharT> format(const CharT* c_str,std::size_t n=0)
{
return Format<CharT>(c_str,n);
}
//---------------------------------------------------------------------------------
int main()
{
using namespace std;
format("some");
return 0;
}
I2luY2x1ZGUgPHN0cmluZz4KCnRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgpjbGFzcyBGb3JtYXQKewpwdWJsaWM6CiAgdHlwZWRlZiBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyVD4gU3RyaW5nVDsKCiAgdGVtcGxhdGU8IHR5cGVuYW1lIENoYXJUPgogIGZyaWVuZCBGb3JtYXQ8Q2hhclQ+IGZvcm1hdChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyVD4mIHN0cixzdGQ6OnNpemVfdCBuKTsKCiAgdGVtcGxhdGU8IHR5cGVuYW1lIENoYXJUPgogIGZyaWVuZCBGb3JtYXQ8Q2hhclQ+IGZvcm1hdChjb25zdCBDaGFyVCogc3RyLHN0ZDo6c2l6ZV90IG4pOwogIApwcml2YXRlOgogIEZvcm1hdChjb25zdCBTdHJpbmdUJiBzdHIsIHN0ZDo6c2l6ZV90IGZpcnN0QXJnTnVtYmVyPTApe307CiAgRm9ybWF0KGNvbnN0IEZvcm1hdCYgZil7fTsKICBGb3JtYXQmIG9wZXJhdG9yPT0oY29uc3QgRm9ybWF0JiBmKXt9Owp9OwovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGZyaWVuZCBmb3JtYXQoKSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp0ZW1wbGF0ZTwgdHlwZW5hbWUgQ2hhclQ+CkZvcm1hdDxDaGFyVD4gZm9ybWF0KGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPENoYXJUPiYgc3RyLHN0ZDo6c2l6ZV90IG49MCkKewogIHJldHVybiBGb3JtYXQ8Q2hhclQ+KHN0cixuKTsKfQovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp0ZW1wbGF0ZTwgdHlwZW5hbWUgQ2hhclQ+CkZvcm1hdDxDaGFyVD4gZm9ybWF0KGNvbnN0IENoYXJUKiBjX3N0cixzdGQ6OnNpemVfdCBuPTApCnsKICByZXR1cm4gRm9ybWF0PENoYXJUPihjX3N0cixuKTsKfQovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKaW50IG1haW4oKQp7CiAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsgCiAgCiAgZm9ybWF0KCJzb21lIik7CiAgCiAgcmV0dXJuIDA7Cn0KCg==
prog.cpp:9:13: error: declaration of 'class CharT'
template< typename CharT>
^
prog.cpp:3:10: error: shadows template parm 'class CharT'
template<typename CharT>
^
prog.cpp:12:13: error: declaration of 'class CharT'
template< typename CharT>
^
prog.cpp:3:10: error: shadows template parm 'class CharT'
template<typename CharT>
^