C++ 将类型添加到现有模板而不删除它c++;17

C++ 将类型添加到现有模板而不删除它c++;17,c++,templates,c++17,C++,Templates,C++17,我的目标是能够在声明中包含我自己的额外类型,并将其传递给我的模板函数。我怎样才能声明我的类型,这样编译器就不会删除我额外的模板参数 例如,我有以下代码: #包括 #包括 //my_vector是std::vector的别名,它还需要额外的类型E 模板 使用my_vector=std::vector; //我的别名类型正在降级为std::vector 模板 无效写入(std::ostream stream、const my_vector和vec){ //我需要E型的一些东西在这里,例如这个 流当使

我的目标是能够在声明中包含我自己的额外类型,并将其传递给我的模板函数。我怎样才能声明我的类型,这样编译器就不会删除我额外的模板参数

例如,我有以下代码:
#包括
#包括
//my_vector是std::vector的别名,它还需要额外的类型E
模板
使用my_vector=std::vector;
//我的别名类型正在降级为std::vector
模板
无效写入(std::ostream stream、const my_vector和vec){
//我需要E型的一些东西在这里,例如这个
流当使用别名时,您可以在其中读取:

推导模板参数时,不会通过模板参数推导来推导别名模板


您可以尝试以下方法:

#include <iostream>
#include <vector>

template<class T, class E>
struct util {
    std::vector<T> my_vector;

    void write_to(std::ostream& stream) {
        stream << static_cast<E>(my_vector.size());
        for (auto elm : my_vector) {
                stream << elm;
        }
    }
};

int main() {
    util<float, uint8_t> u;
    u.my_vector = std::vector<float>{ 1.0f, 2.0f, 3.0f };
    u.write_to(std::cout);
}
#包括
#包括
模板
结构util{
std::vector my_vector;
无效写入(std::ostream&stream){

谢谢,我不知道。我通过继承std::vector解决了这个问题,我将用我的解决方案编辑我的问题。这很有趣,但在我的代码库中写入是一个具有其他重载的类中的函数。它还增加了作为
u
成员访问
my\u vector
的需要。
#include <iostream>
#include <vector>

template<class T, class E>
struct util {
    std::vector<T> my_vector;

    void write_to(std::ostream& stream) {
        stream << static_cast<E>(my_vector.size());
        for (auto elm : my_vector) {
                stream << elm;
        }
    }
};

int main() {
    util<float, uint8_t> u;
    u.my_vector = std::vector<float>{ 1.0f, 2.0f, 3.0f };
    u.write_to(std::cout);
}