首页 > 解决方案 > C++ 专业化需要开放命名空间

问题描述

C++ 中的模板特化需要打开库命名空间。据我所知,这被认为是糟糕的编程技术。例如,广泛使用的YAML-CPP库使用这种技术进行类型转换。请参阅YAML-CPP 转换<> 模板

他们的宣言:

namespace YAML {
template <typename T>
struct convert;
}

可能的定义:

namespace YAML {
struct convert<MyOwnType> {
  MyOwnType convert() {
    return MyOwnType{};
  }
}
}

是否有更好的 C++ 构造来创建类型转换功能而无需打开库的名称空间等?

标签: c++

解决方案


推荐阅读