I need to convert a tuple to a byte array. This is the code I use to convert to byte array:
    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;
    }    
Here is how I call it:
    void foo(T... keyTypes){
        keys = std::tuple<T... >(keyTypes...);
        const auto bytes = get_bytes(keys);
    }
I need to augment this code such that when a pointer is a part of the tuple, I dereference it to it's value and then pass the new tuple, without any pointers, to the get_bytes() function. How do I detect the presence of a pointer in the tuple? I can then iterate through the tuple and dereference it with:
    std::cout << *std::get<2>(keys) << std::endl;