Quintanar,
> нельзя реализовать + от аргументов разных типов.
Это странный тезис. Для тех же векторов в линейной алгебре определяют умножение на число. И матрицу можно умножить на вектор (при определенных условиях)...
Posted via RSDN NNTP Server 2.0 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Здравствуйте, _vovin, Вы писали:
_>Сложение чисел отлично ложится на операцию + (Number, Number). Для частных случаев может быть создана специализация (например + (int, int)), для остальных — двойная диспетчеризация с последующим приведением чисел к одному вышестоящему общему типу.
Дааа.... представил себе как это всё будет понятно и эффективно
Здравствуйте, VladD2, Вы писали:
VD>В общем, пусть любой кинет в меня камень если он способен не понять кострукцию "строка 1 " + "строка 2".
Сейчас компиляторы C++ камнями ка-ак закидают!
... << RSDN@Home 1.1.4 stable rev. 510>>
Здравствуйте, jazzer, Вы писали:
J>А статья, на мой взгляд, абсолютно пустая и времени, на нее потраченного, не стоит
Зато какое обсуждение!
... << RSDN@Home 1.1.4 stable rev. 510>>
Здравствуйте, eao197, Вы писали:
E>Справедливости ради можно добавить, что в зависимости от левого операнда оператора сдвига выполняемое действие может очень сильно меняться:
E>
E>// Вычисляем MD5-хеш двоичного образа.
E>Md5_Hash hash;
E>hash << my_data;
E>
А насчёт MD5 это просто по принципу или существует где-нибудь такая реализация криптографических примитивов?
C Уважением, Andir!
using( RSDN@Home 1.2.0 alpha r597 ) { /* Работаем */ }
Здравствуйте, Andir, Вы писали:
E>>E>>// Вычисляем MD5-хеш двоичного образа.
E>>Md5_Hash hash;
E>>hash << my_data;
E>>
A>А насчёт MD5 это просто по принципу или существует где-нибудь такая реализация криптографических примитивов?
Просто по принципу, сам я таких готовых вещей для MD5 не видел.
Хотя, вот например, такая цитата из tutorial по библиотеке
Botan:
First, some notation. The passphrase is stored as a std::string named passphrase. The input and
output files (infile and outfile) are of types std::ifstream and std::ofstream (respectively).
3.1.1 First try
We hash the passphrase with SHA-1, and use the resulting hash to key Blowfish. To generate the IV, we
prepend a single ’0’ character to the passphrase, hash it, and truncate it to 8 bytes (which is Blowfish’s block
size).
HashFunction* hash = get_hash("SHA-1");
SymmetricKey key = hash->process(passphrase);
SecureVector<byte> raw_iv = hash->process(’0’ + passphrase);
InitializationVector iv(raw_iv, 8);
Pipe pipe(get_cipher("Blowfish/CBC/PKCS7", key, iv, ENCRYPTION));
pipe.start_msg();
infile >> pipe;
pipe.end_msg();
outfile << pipe;
Сам я с Botan не работал (просто раньше столкнулся с Crypto++ и переходить на что-то другое уже смысла не было), может там еще чего похожее есть. Или же можно сделать:
class My_Data { ... };
Botan::Pipe &
operator<<( Botan::Pipe & pipe, const My_Data & d )
{
...
return pipe;
}
... << RSDN@Home 1.1.4 stable rev. 510>>