从字节到基本类型的返回类型推导

时间:2017-11-27 11:49:23

标签: c++

我正在尝试创建一个读取函数,它可以从向量中读取字节并将它们转换为基本类型。

创建模板可能不是最好的选择,但我找不到更好的选择。我发现了类似但不同的主题Template return type deduction from lvalue?

简而言之,这意味着在以下代码中编写int test = read(it);而不是int test = read<int>(it);

#include <iostream>
#include <vector>
#include <type_traits>

template<typename T, typename = std::enable_if<std::is_fundamental<T>::value>>
T read(std::vector<char>::const_iterator& it) {
    T v;
    char* p = (char*)&v;
    for (size_t i=0; i < sizeof(T); i++) {
        *(p+i) = *(it++);
    }
    return v;
}

int main()
{
    std::vector<char> v{0,0,0,1};
    std::vector<char>::const_iterator it = v.begin();
    auto begin = it;
    int test = read<int>(it);

    std::cout << test << " bytes readed :" << std::distance(begin,it) << std::endl;

}

https://wandbox.org/permlink/OSlrZw3cGKoNrMqb

0 个答案:

没有答案