使用模板结构作为命名空间
Using a template structure as a namespace
我刚刚完成了对我正在编写的库的迭代。为了隔离某些类型,我最初将它们放入命名空间中。然后,我意识到这个命名空间实际上应该被模板化,所以我把它变成了一个结构,即:
namespace A
{
typedef _foo foo;
}
成为
template <class T>
struct A
{
typedef _foo<T> foo;
};
在这种情况下使用起来更方便:
template <class T>
class MyClass
{
public:
typedef A<T> nsA;
typedef typename nsA::foo foo_type;
};
现在,我在另一个库中使用该库,在那里,我知道模板类型T
永远不会改变。所以我想做这样的事情:
namespace B
{
using namespace A<double>;
}
但显然,这是行不通的。当然,我可以停止懒惰,typedef
手动A<double>
中的每个定义,但我喜欢尽可能懒惰。关于如何做与最后一步相当的事情的任何想法?
实际上,我刚刚找到了答案。对不起,如果你认为这个问题没用,我会删除它,只是在评论中告诉我。
由于我首先使用结构作为命名空间,因此解决方案是继续使用结构作为命名空间(!
struct B
: public A<double>
{};
这是一个演示。
相关文章:
- 哪些C结构出现在std命名空间中
- CERN 根:为命名空间中的外部"C"结构生成流处理器
- 成员的结构与命名空间的潜在范围
- 是否有一个很好的方法可以在C 11中打印出像JSON一样的Trie结构(仅迭代解决方案)的扁平命名空间
- 为在与类方法中的类相同的命名空间中定义的结构调用重载运算符
- 命名空间、标头和对象的层次结构
- 命名空间外部变量的未定义参考/多重定义,C 结构问题
- 为什么我不能将该操作员的过载与结构相同的命名空间
- 我是否可以在类似于 C# 的 C++ 中创建全局命名空间层次结构,以帮助开发人员使用我们的代码?
- 将结构放在匿名命名空间中有什么作用?
- 命名空间中常量结构、类和数组的初始化
- 无法在 Cython 中带有命名空间的C++代码中返回 C 结构
- 为什么结构必须与模板类位于同一命名空间中才能编译
- 使用模板结构作为命名空间
- 匿名命名空间中的静态结构
- 引用命名空间中的结构类型
- 类型定义和结构命名空间在 C 与 C++ 中
- C++ 当命名空间发生冲突时,为什么结构/类不与变量和函数发生冲突?
- 如何定义一个使用命名空间的全局结构,以便使用该结构的文件不使用该命名空间?c++
- 如何声明在不同命名空间中定义的结构体