c++ - 隐藏 typedef 实现

标签 c++ boost c++11

我有这个 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/

相关文章:

c++ - 异步线程间通信

c++ - 对于 boost::variant,是否有 boost::visit 之类的 std::visit?

c# - 访问 C# 字典中的元素

C++ Integer 从 *char[] 中删除字符串

serialization - 如何序列化 boost::interprocess::containers::vector

c++ - 使用 boost::archive::binary_iarchive 的内存泄漏

c++ - 我怎么知道,如果我找到了我在 STL 列表中搜索的号码。

c++ - 可变参数模板和新的

c++ - 我可以重新解释_cast constexpr 函数的参数吗?

c# - 以编程方式设置唤醒时间