我希望有一个类型特征,对于任何在使用前不需要内存初始化的类型返回true,并且其复制构造函数可以作为memcpy实现。
我想让它回到真实
对于std::vector和任何在构造时需要某些东西对象(大多数对象)则为false。
std::is_pod似乎非常接近我想要的,因为它对于std::array也返回true,但不幸的是,对于我自己的il::array,它没有返回true。有没有任何方法可以“教导”Is_pod我的il::数组表现为普通的旧数据,或者有一种简单的方法来推出我自己的类型特性?
有关信息,这里是我的il::array实现:
namespace il {
template <typename T, int n>
class array {
private:
T data_[n > 0 ? n : 1];
public:
array(const T& value)
: array() {
for (int k = 0; k < n; ++k) {
data_[k] = value;
}
}
array(std::initializer_list<T> list) {
IL_ASSERT(n == static_cast<int>(list.size()));
for (int k = 0; k < n; ++k) {
data_[k] = *(list.begin() + k);
}
}
const T& operator[](int k) const {
IL_ASSERT(static_cast<unsigned int>(k) < static_cast<unsigned int>(n));
return data_[k];
}
T& operator[](int k) {
IL_ASSERT(static_cast<unsigned int>(k) < static_cast<unsigned int>(n));
return data_[k];
}
T* data() {
return data_;
}
int size() const {
return n;
}
};
}
我希望有一个类型特征,对于任何在使用前不需要内存初始化的类型返回true,并且其复制构造函数可以作为memcpy
实现。
您正在描述一种微不足道的类型。您可以使用std::is_trivial
进行检查。
< code>std::is_pod似乎与我想要的非常接近
这也要求类型具有标准布局,这就限制了其数据成员的声明方式和位置。
不幸的是,它不会为我自己的 il::array
返回 true
也许这不是标准布局,在这种情况下< code>is_trivial应该适合您。或者也许它在任何情况下都不是微不足道的。在这种情况下,您可能想要修复它,使它成为。
更新:它有一个用户声明的默认构造html" target="_blank">函数,这使得它非常重要。因为它只检查编译时间常数的值,所以可以用<code>static_assert</code>替换它;或者将n
更改为更合理的无符号类型,如std::size_t
,以消除对健全性检查的需要。
但是你仍然需要声明它是违约的
array() = default;
否则其他构造函数的存在会删除它。
有什么方法可以“教导”< code>is_pod我的< code>il::array表现为普通的旧数据?
你可以写你自己的特点,针对你的类型进行专门化。但那会很奇怪;如果你的类型应该是琐碎的或POD,那么就让它成为琐碎的。
我正在尝试有一个通量通用转换器使用通用类型在Java 8。我把我的代码建立在这个答案的基础上。其思想基本上是实现这个特定的转换器->: 类型转换器->转换为我想要的任何类型。因此,我正在使用构造函数创建一个类型为的类,并返回一个方法。我想在调用上创建类似这样的多个条目:,但类类型不同。但它甚至对整数也不起作用。 当我使用此单元测试进行测试时,我得到错误:。
我有一个有界泛型类,我们称之为泛型,它的参数T扩展了抽象类abstract: 泛型类: 抽象类 泛型类中T引用的类 当尝试引用方法 getMap() 时,该方法来自 T 边界内的类(并且根据抽象类定义,T 的所有可能实例都将具有该方法),我收到以下错误: 不能从静态上下文引用非静态方法getMap() 然而,任何地方都没有静态关键字。我错过了什么?? 谢谢!
这个问题是在泛型关联类型在Rust中可用之前提出的,尽管它们是被提出和开发的。 我的理解是,特征泛型和关联类型在它们可以绑定到结构的类型数量上有所不同。 关联类型仅绑定1个类型: 泛型关联类型是这两种类型的混合。它们绑定到一个类型,正好有一个关联的生成器,而生成器又可以关联任何数量的类型。那么前面示例中的和这个泛型关联类型有什么区别呢?
我是新手。我正在开发一个测验应用程序,并拥有以下三个dart文件: 主要的飞奔 question.dart answer.dart 当我在android studio中的android上运行应用程序时,出现以下错误: ══╡ 小部件库捕获的异常╞═══════════════════════════════════════════ 生成MyApp时引发了以下类型的错误(脏,状态:_MyAppSta
在存储到本地数据库之前,将字符串转换为对象的正确方法是什么? 这是的输出: 我试图将其转换为CreatedBy对象 创造的 这里是我的本地表列 错误
我正在开发一个依靠API REST调用的flutter应用程序。来自API的响应有点复杂。当调用我的API(例如:api/产品)时,我可以从日志中看到响应:但是我有这个错误: 类型列表 StackTrace: [更新]:退货产品响应。fromJson(response)而不是response ProductsRespository: ProductsBloc: 回应: ApiProvider: 模