作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
查看 example implementation std::is_array
,它们具有以下代码:
template<class T>
struct is_array<T[]> : std::true_type {};
template<class T, std::size_t N>
struct is_array<T[N]> : std::true_type {};
什么时候匹配 T[]
特化而不匹配 T[N]
特化?为什么需要两个?我假设这个 T[]
与它在函数参数中的含义不同,它与指针的含义相同,对吗?
最佳答案
类型 T[]
是一个不完整的类型,已知它是一个数组,但此时大小(也是类型的一部分)未知。它可以在某些上下文中使用,在这些上下文中,您可能想要检查声明的变量是否为数组。虽然变量的类型仍然不完整,但 std::array
的第二个特化将不匹配,因为大小未知。
// test.h
struct Test {
static int data[];
};
// test.cpp
int Test::data[10];
只包含 header 但不可见 test.cpp
的 TU 可能想要测试 Test::data
是否为数组。
关于c++ - 模板特化中 T[N] 和 T[] 的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20379635/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 4 年前。
正如您在 this travis.yml 中看到的那样文件,我的代码依赖于一些第三方库,我在构建项目之前将它们安装在远程系统上。 Travis 每次推送提交时都会下载并构建这些库,这可以避免吗?我的意
我是一名优秀的程序员,十分优秀!