Как сделать?
Перегрузка не катит, так как хочется что бы в FixedString<char> был только printf(char *) а не пара printf(char *) и printf(wchar_t *) . Иначе при забытом L в L"hello world" невменяемые сообщения об ошибке внутри моего класса, а не снаружи в месте использования.
template <class Char, int BUF_SIZE>
class FixedString
{
void printf(Char *fmt);
};
template <class Char, int BUF_SIZE>
void FixedString<char, BUF_SIZE>::printf(char *fmt)
{
}
template <class Char, int BUF_SIZE>
void FixedString<wchar_t, BUF_SIZE>::printf(wchar_t *fmt)
{
}
int main()
{
}
test.cpp:12: error: invalid use of undefined type `class Test<char, BUF_SIZE>'
test.cpp:5: error: declaration of `class Test<char, BUF_SIZE>'
test.cpp:12: error: template definition of non-template `void Test<char, BUF_SIZE>::printf(char*)'
test.cpp:17: error: invalid use of undefined type `class Test<wchar_t, BUF_SIZE>'
test.cpp:5: error: declaration of `class Test<wchar_t, BUF_SIZE>'
test.cpp:17: error: template definition of non-template `void Test<wchar_t, BUF_SIZE>::printf(wchar_t*)'