typetraits相关内容

我们需要什么std :: as_const()?

C ++ 11给了我们 std :: add_const ;使用C ++ 17,我们有了一个新结构- std :: as_const() .前者只是在为其提供类型之前加上 const .第二个是适当的(一个a的模板)函数,而不是类型特征,它似乎可以做到这一点-除了当类型是右值引用时(在这种情况下,它不能使用). 我不太了解提供 std :: as_const()的动机.为什么除了 std : ..
发布时间:2021-04-20 18:58:19 C/C++开发

向成员函数添加const限定符

我目前正在编写一个接口类,该类应提供对作为const或非const引用的复杂结构内部元素的访问.这个想法是,某些模块被授予const访问权限,而某些模块被授予完全访问权限. 我已经使用了'type_traits''std :: add_const'有条件地限定内部成员函数的返回类型,不幸的是,我无法想到一种有条件地将成员函数限定为const或non-const的方法. 这甚至有可能吗? ..
发布时间:2021-04-20 18:44:21 C/C++开发

寻找"is_comparable";类型特征

我正在寻找"is_comparable"类型特征,但找不到任何特征. 构建一个用于检查是否为类实现了 operator == 的代码非常容易,但这不包括全局定义的运算符. 是否不可能实现is_comparable typetait? 解决方案 我认为这是一个特征,对于两种类型的 L 和 R 这些类型的对象 lhs 和 rhs 如果满足以下条件,将产生 true lhs == r ..
发布时间:2021-04-20 18:43:14 其他开发

如何检查下标运算符的存在?

我想写一个类型特征,它使用SFINAE来检查类型是否存在下标表达式.当可能使用下标表达式时,我下面的最初尝试似乎可行,但是当不使用方括号运算符时,我的以下尝试不可行. #include#include#include模板结构has_subscript_operator_impl{模板 ..
发布时间:2021-04-20 18:33:21 C/C++开发

如果表达式为constexpr,则为static_assert

我想创建一个班级模板 模板X类{//这里,我将使用T :: value(除其他外)}; T :: value 通常是constexpr静态变量,但并非总是如此. T :: value 必须为正值,所以我想让人们尽可能地在编译过程中知道它. 如果 T :: value 始终是constexpr,我将像 那样添加 static_assert static_asse ..
发布时间:2021-04-19 21:03:40 C/C++开发

如何判断C ++模板类型是否为C样式字符串

我正在尝试编写模板 is_c_str 来测试类型是否为c样式的字符串.我需要这样做来尝试编写to_string函数,如我的其他问题所示: STL容器的迭代器的模板专业化吗?. 我需要区分c_str以及其他类型的指针和迭代器,以便可以将第一个表示为面值,并将指针/迭代器呈现为不透明的“监视器"或"ptr".代码如下: #include模板struct is_ ..
发布时间:2021-04-19 20:54:42 C/C++开发

什么样的“特质"?在C ++ 0x标准中使用/定义

C ++中的特征封装了一系列操作,这些操作允许算法或数据结构以实例化该类型的类型进行操作. char_traits 是将 string -和文件所需功能分组的示例. 但并非所有特征的名称中都带有“特征",对吗?我想到了 numeric_limits .这也是“特质"吗?即使其中没​​有名称"trait"? 那么,还有其他可以/应该被认为是“特质"的模板吗?除了我发现的示例之外: ..
发布时间:2021-04-19 20:49:39 C/C++开发

C ++中的可重用成员函数

我正在使用此成员函数获取指向对象的指针: 虚拟对象* Create() { 返回new Object(); } 它是虚拟的,因此我可以获取指向派生对象的指针,现在我这样做是这样的: 虚拟对象* Create() { return new Foo(); } 它可以正常工作,但我想这样做是为了防止任何错误,并且还可以简化操作,因此我不必在每次创建新类时 ..
发布时间:2020-09-28 02:31:22 C/C++开发