Я не очень знаком ни с Boost, ни с Hana; но я зашел на их сайт и прочитал немного их документации по некоторым их объектам, функциям и т. д. Я не знаю, поможет ли это вам, но я смог немного изменить ваш код и получил его для компиляции: [115 ]
int main() {
A a;
auto tuple = hana::make_basic_tuple( 42, "42" );
hana::for_each( hana::zip( hana::members(a), tuple),
[&](auto&& element) {
hana::at( tuple, hana::size_c<0> );
hana::at( tuple, hana::size_c<1> );
}
);
}
Я изменил вашу лямбду на [&]
и изменил параметр на auto&&
, и я использовал hana::at()
. AFAIK Я не думаю, что это что-то назначает на данный момент, но вы могли бы использовать это и перейти отсюда, но положительным моментом является то, что на том же веб-сайте вы предоставили свой демонстрационный код и с теми же настройками компилятора, это сделало скомпилировать без ошибок. Демонстрация в реальном времени
Клиент потребует, чтобы распределение запутываемых последовательных номеров заказа было похоже на что-нибудь в особенности?
, Если Вы не хотите усложнять себя с шифрованием, используйте комбинацию перестановки бита с небольшим количеством случайного соления (если бы у Вас есть биты/цифры для экономии), XOR-наложенный на некоторую фиксированную постоянную (или некоторая функция чего-то, которое было бы легко доступно вместе с запутываемым ID заказа когда-либо, такой как, возможно, customer_id
, кто разместил заказ?)
РЕДАКТИРОВАНИЕ
кажется, что весь клиент требует, для внешней стороны, чтобы не быть в состоянии вывести прогресс продаж. В этом случае решение для перестановки (побитовое отображение, например, исходный бит 1 карта к запутываемому биту 6, исходный бит 6 карт к запутываемому биту 3, и т.д.) должно быть более, чем достаточным. Добавьте некоторые случайные биты, если Вы действительно хотите мешать раскалываться, при условии, что Вы имеете дополнительные биты в наличии (например, предполагающий, что числа первоначального заказа идут только до 6 цифр, но Вам разрешают 8-9 в запутываемом номере заказа, тогда можно использовать 2-3 цифры для случайности прежде, чем выполнить побитовое отображение). Возможно XOR результат для дополнительного запугивания (любознательная сторона могла бы попытаться генерировать два последовательных запутываемых заказов, XOR их друг против друга для избавлений от константы XOR, и должна будет тогда вывести, какой из ненулевых битов прибывает из соли, и которые прибыли из инкремента, и получил ли он действительно два последовательных номера заказа или нет... Он должен был бы повторить это для значительного количества того, что он будет надеяться, последовательные номера заказа для взламывания его.)
<час>EDIT2
можно, конечно, выделить абсолютно случайные числа для запутываемых ID заказа, сохранить корреспонденцию к персистентному устройству хранения данных (например, DB) и выполнить обнаружение коллизий, а также de-путаницу против того же устройства хранения данных. Немного излишества, если Вы спрашиваете меня, но зато это является лучшим до путаницы, идет (и Вы реализуете, какой бы ни функция распределения Ваши требования души, и можно изменить функцию распределения каждый раз, когда Вам нравится.)
Выберите 8 или 9 чисел цифры наугад, скажите 839712541. Затем возьмите двоичное представление своего номера заказа (для этого примера, я не использую 2 дополнение), увеличьте его к тому же числу битов (30), инвертируйте его, и xor зеркально отраженный номер заказа и магическое число. Например:
1 = 000000000000000000000000000001
Flip = 100000000000000000000000000000
839712541 = 110010000011001111111100011101
XOR = 010010000011001111111100011101 = 302841629
2 = 000000000000000000000000000010
Flip = 010000000000000000000000000000
839712541 = 110010000011001111111100011101
XOR = 100010000011001111111100011101 = 571277085
Для возвращения номеров заказа, xor выходное число с магическим числом, преобразовывают в небольшую строку и реверс.
В 9 числах цифры первая цифра является случайным индексом между 0 и 7 (или 1-8). Поместите другую случайную цифру в то положение. Остальное - "реальный номер заказа:
Результат: 500040100
Номер Orig: 101
можно решить, что 5-м (или любой другой) цифра является индекс.
Или, если можно жить с реальными номерами заказа 6 цифр, тогда можно представить "вторичный" индекс также. И можно инвертировать порядок цифр в "реальном" порядке номер