gpt4 book ai didi

c++ - 使用 yaml-cpp 转换为模板类

转载 作者:太空狗 更新时间:2023-10-29 23:02:35 25 4
gpt4 key购买 nike

我有自己的容器:

template<class T>
class MyContainer {}

我正在使用 yaml-cpp 将一些数据加载到这个容器中。所以我需要为 convert 结构编写专门化:

template<> struct convert< MyContainer<int> > {};
template<> struct convert< MyContainer<double> > {};
template<> struct convert< MyContainer<char> > {};
template<> struct convert< MyContainer<MyClass> > {};

...等等。

最后,我写:

// ...
node.as< MyContainer<int> >
// ...

但事实是 MyContainer 的每个特化都是相同的。因此,convert 的每个特化都是相同的,它们是多余的:

template<> struct convert< MyContainer<int> > { /* the same code */ };
template<> struct convert< MyContainer<double> > { /* the same code */ };
template<> struct convert< MyContainer<char> > { /* the same code */ };
template<> struct convert< MyContainer<MyClass> > { /* the same code */ };

是否可以使用 c++ 本身或 yaml-cpp 的一些其他功能来避免这种垃圾?

最佳答案

到评论

in fact the situation a bit more complex. What confused me, that MyContainer has two template arguments and convert has only one. So I should have written: template<class A, class B> struct convert< Manager<A, B> > { /**/ };

尝试可变部分特化

template <typename... Ts> 
struct convert< MyContainer<Ts...> > {

using container_type = MyContainer<Ts...>;

// ... the specialized implementation, once

};

关于c++ - 使用 yaml-cpp 转换为模板类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27920557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com