我有这个 typedef 依赖于另一个库中的类型(在本例中为 boost):
#include <boost/any.hpp>
typedef boost::any& myAnyType;
我会在我的所有程序中使用定义 myAnyType 隐藏它的真实性质并保持独立于 Boost 库(客户端不需要安装 Boost 来使用 myAnyType)
有可能吗?
最佳答案
the client does not need to install Boost to use myAnyType
肯定是这样。是的,您将其定义为对 any
的引用,因此他们可以在没有类型定义的情况下声明“myAnyType”变量。但他们对此无能为力。事实上,像 myAnyType var;
这样简单的东西会失败,因为它是一个引用。
它们甚至不能调用将 myAnyType
作为参数的函数,因为它们不能声明一个 myAnyType
对象。即使 const myAnyType
也行不通,因为 C++ 必须创建一个临时变量。而且它无法从未定义的类型创建临时对象。
您的库并不独立于 Boost;它依赖 Boost,并将 Boost 放在其界面中。 myAnyType
是 Boost 的一部分,因为它基于 Boost 的一部分。因此,您的客户是 Boost 的客户。您和他们越早接受这一点越好。
关于c++ - 隐藏 typedef 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8428634/