最佳答案
这是我上一个关于 美化打印 STL 容器的问题的后续,为此我们设法开发了一个非常优雅和完全通用的解决方案。
在下一步中,我将使用可变模板(所以这是严格的 C + + 11)为 std::tuple<Args...>
包含美观打印。对于 std::pair<S,T>
,我只是说
std::ostream & operator<<(std::ostream & o, const std::pair<S,T> & p)
{
return o << "(" << p.first << ", " << p.second << ")";
}
打印元组的类似结构是什么?
我尝试了各种模板参数堆栈解包,传递索引,并使用 SFINAE 来发现什么时候我在最后一个元素,但没有成功。我不会用我的破代码给您增加负担; 希望问题描述足够直接。基本上,我喜欢以下行为:
auto a = std::make_tuple(5, "Hello", -0.1);
std::cout << a << std::endl; // prints: (5, "Hello", -0.1)
包含与前一个问题相同的通用级别(char/wchar _ t,对分隔符)的额外加分!