【发布时间】:2021-02-01 03:12:10
【问题描述】:
我猜你已经看到了这个特殊的功能:
template<typename T> void print(const T& cont){
for (auto &i: cont)
std::cout << i << " ";
std::cout << std::endl;
}
它打印几乎所有类型的容器,例如std::list。现在我想创建一个打印(例如)3D std::vector,看看这个幻想:
template<typename T1, typename T2> void print(const T1<T2>&);
当然,这不是模板的工作方式。怎么做?同样重要的是:在 c++17 和 pre-c++17 中这样做有什么区别吗?
【问题讨论】:
-
我看到你接受了答案 :) 但是你所说的 c++17 和之前的区别是什么意思?
-
@cigien 我听说很多编译器默认使用 c++14 的原因(即使他们有 c++20)是因为很多项目因为在c++17 及之后的模板,这就是原因。但现在我看到这在 c++17 中完美运行
-
嗯,我想我没听说过。我不会担心的:)
-
@cigien 也许,但顺便说一句,由于其他原因,我看到这段代码在 c++14 中不起作用。我尝试将标志更改为
-std=c++14,但它无法编译。但无论如何,这是一个了不起的解决方案! -
嗯,你是对的。我其实不知道为什么。它应该在 c++14 中工作:p
标签: c++ templates multidimensional-array