Частичная специализация функций-членов
От: _Winnie Россия C++.freerun
Дата: 05.08.06 23:02
Оценка: 1 (1)
Как сделать? Перегрузка не катит, так как хочется что бы в 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*)'
Правильно работающая программа — просто частный случай Undefined Behavior
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.