Мне нужно преобразовать кортеж в массив байтов. Это код, я использую, чтобы преобразовать массив байтов:Определить указатели в кортеже C++ 11
template< typename T > std::array< byte, sizeof(T) > get_bytes(const T& multiKeys)
{
std::array< byte, sizeof(T) > byteArr ;
const byte* start = reinterpret_cast< const byte* >(std::addressof(multiKeys)) ;
const byte* end = start + sizeof(T);
std::copy(start, end, std::begin(byteArr));
return byteArr;
}
Вот как я это называю:
void foo(T... keyTypes){
keys = std::tuple<T... >(keyTypes...);
const auto bytes = get_bytes(keys);
}
мне нужно увеличить этот код такой, что, когда указатель является частью кортежа , Я разыгрываю его по значению, а затем передаю новый кортеж без указателей на функцию get_bytes(). Как определить наличие указателя в кортеже? Затем я могу перебирать кортеж и разыменования его с:
std::cout << *std::get<2>(keys) << std::endl;
Я думаю, что это работает, только если все элементы кортежа являются указателями. Что, если один элемент кортежа является char *, а остальные - int. – jok
@jok: Затем вы вызываете 'char get_bytes (char const *)' для указателя и 'int get_bytes (int)' для целых чисел. Просто уточнить: это, конечно, предполагает, что вы перебираете все элементы кортежа и вызываете 'get_bytes' для каждого отдельного элемента. –
MSalters