有没有办法在begin()
中确定某个类型是某种容器(可能包含end()
和c++98
并转发迭代器)?我看到this,但它使用decltype
中的c++11
。
同样为每个容器(列表,向量等)制作专业化并不是那么有吸引力 - 也许更通用的东西?
可能是重复......我想这曾经是一个常见的问题
修改:
我认为this几乎是我所需要的,我应该从中删除tuple
内容,并将std::enable_if
替换为c ++ 98代码。我现在应该怎么处理这个问题?保持开放?要么?如果有人为我工作,我很乐意接受他的回答:D
答案 0 :(得分:1)
我找到了这个 - cxx-prettyprint并会根据我的需要进行调整。
答案 1 :(得分:0)
您可以为要支持的所有常见容器编写特化,并在通用(非专用)模板中编译失败。
STL中没有那么多容器。差不多15岁。
在这种情况下,您的专业化将仅通过常规机制为常见容器选取,并且用户仍然可以使用自己的容器,只要他们编写所需的专业化。
关于C ++ 98 / C ++ 11还有其他一点。编译器没有一步实现所有C ++ 11功能。例如,constexpr
仅由Microsoft在VisualStudio 2015中实现。如果您尝试在随机编译器上运行代码,则希望看到某些C ++ 11功能存在,某些功能不存在。
使用C ++ 11的某些功能可能不是一个大错误,前提是您知道它们是在您感兴趣的编译器中尽早实现的。