gpt4 book ai didi

c++ - 为什么我不能声明一个同时具有模板容器和模板包含值的类型?

转载 作者:可可西里 更新时间:2023-11-01 18:31:13 26 4
gpt4 key购买 nike

为什么这不是有效的 C++?

template <typename Container, typename T>
bool
foo (const Container <T> &);

g++ 给我 Container is not a template这显然不是它真正的意思。

尝试 template <typename Container> template <typename T>也不起作用,const typename Container <T> & 也不起作用

在我看来,人们想要定义一个对容器和包含的类型都是通用的接口(interface)似乎是合理的。

所以,

  • 就标准而言,为什么不允许这样做?
  • 在设计标准方面,为什么不允许这样做,会不会引起问题?
  • 除了基于迭代器的接口(interface)之外,C++14 中是否有解决方法?

最佳答案

你可以这样做:

template <template <class... > class Container, class T>
bool foo (const Container<T> &);

此语法 ( class... ) 告诉编译器 container是具有任意数量参数的模板。

记住,当你有 template <class T>你希望 T 成为类型。 std::vector不是类型,它是模板。 std::vector<int>是一种类型,但那不是模板,所以你不能有 std::vector<int> <char> .

关于c++ - 为什么我不能声明一个同时具有模板容器和模板包含值的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35894841/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com