Re[4]: #if не для макроса а для имени класса
От: SVV Беларусь  
Дата: 08.03.14 16:57
Оценка:
Здравствуйте, flаt, Вы писали:

F>Здравствуйте, SVV, Вы писали:


SVV>>прошу подсказать как написать этот some_template


F>Там куча способов есть. Но смысла это не имеет: http://rsdn.ru/forum/cpp/5493412.1
Автор: jazzer
Дата: 28.02.14


предположим, есть такая штука:
template <class T>
inline void ReverseBytes(T &i_rVal)
{
  BYTE *pBytesSrc = reinterpret_cast<BYTE *>(&i_rVal);
  BYTE *pBytesRet = reinterpret_cast<BYTE *>(&i_rVal);
  size_t uBytesToSwap = sizeof(T)>>1;
  for (size_t i=0,j=sizeof(T)-1; i<uBytesToSwap; ++i, --j)
    SwapBytes(pBytesRet[j], pBytesSrc[i]);
}

для 2 и 4 байтных типов есть быстрая реализация без циклов. фиксированное количество операций. можно конечно писать специализированную функцию для каждого двухбайтного типа, но проще ориентироваться на sizeof(T) и неважно как называется тип (в коде много typedef)

для такого варианта не сильно понятно как шаблон делать. что-то я слабовал в шаблонах. сегодня перечитывал мейерса, про размерность матрицы в шаблоне, но сдается мне там не о том что мне надо речь шла...
template<typename T, size_t size> 
class SquareMatrix: private SquareMatrixBase { 
public: 
  SquareMatrix() // присвоить указателю на данные 
   :SquareMatrixBase<t>(n, 0), // в базовом классе значение null 
    pData(new T(n*n)) // выделить память для данных матрицы, 
    {this->setDataPtr(pData.get();} // сохранить указатель на нее и передать 
... // его копию базовому классу 
private: 
  boost::scoped_array<T> pData; // о классе boost::scoped_array 
}; //см. правило 13
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.