typetraits相关内容

λ什么时候是琐碎的?

什么时候可以保证lambda是琐碎的? 我假设,如果仅捕获琐碎的类型或什么都不捕获,那将是琐碎的。我没有任何标准的支持。 我的动机是将某些代码从Visual C ++ 12迁移到14,并发现某些静态断言在执行时失败 示例: #include #include 使用命名空间std; int main() { ..
发布时间:2020-09-27 20:22:15 C/C++开发

std :: is_constructible< T,Args>实施?

到目前为止,我在网上找不到任何ELI5。对于一个学习项目,我想实现自己的is_constructible。 解决方案 来自 cppreference : [I] f变量定义 T obj(std :: declval()...); 格式正确,值等于设为 true ,否则 value 为 false 。 可以使用SFINAE技术来检查代码是否格式正确,例如 void_ ..
发布时间:2020-09-27 19:15:56 C/C++开发

为什么std :: is_assignable违反直觉?

std :: is_assignable :: value == false 在符合标准的实现中(例如clang / libc ++,gcc / libstdc ++,但不是VS2012)。 直觉上,这意味着诸如 int x = 3; 的表达式无效。但是 is_assignable 的规范指出,赋值的两面都转换为 std :: add_rvalue_reference ..
发布时间:2020-09-27 07:12:59 C/C++开发

检查是否在可变参数模板参数包中传递类型

我在某处听说过,使用新的C ++ 1z语法,很容易检查是否在可变参数模板参数包中传递了类型-显然,您可以使用接近一行的代码来完成此操作。这是真的?有哪些相关功能? (我尝试查看折叠表达式,但看不到如何在该问题中使用它们...) 这是我在C ++ 11中解决问题的方式供参考: #include template ..
发布时间:2020-09-27 06:43:20 C/C++开发

检测私人成员的存在

我想写一个类型特征以检查某个类型是否具有成员 member 。如果成员是公开,则有许多方法可以做到这一点(例如 void_t ),这可能是 Yakk的 can_apply (最终可以称为 std :: is_detected ): 结构C { int成员; }; 模板 使用member_type = decltype(& T :: member); ..
发布时间:2020-09-27 06:24:54 C/C++开发

is_functor C ++特征类可能吗?

如果参数是C ++函数对象(functor),如何静态推论? template 无效测试(F f){} 我尝试了 is_function< ; F> :: value ,但这不起作用。似乎也没有 is_functor 特质,所以也许不可能。我似乎只是在寻找特定的成员函数,在这种情况下,函数调用运算符是: F :: operator()。 ..
发布时间:2020-09-27 05:46:16 C/C++开发

编译时间模板实例化检查

是否可以检查在编译时是否已实例化模板类型,以便我可以在enable_if专业化中使用此信息? 假设我已经 模板 structknown_type {}; 如果在编译时实例化了known_type,我可以以某种方式定义其值为true的is_known_type吗? 解决方案 如果利用特定表达式可能会或可能不会在的地方使用的事实,则可以执 ..
发布时间:2020-09-27 05:19:33 C/C++开发

检查两种类型是否属于同一模板

我想检查两种类型是否属于同一模板。例如,我希望下面的代码片段返回 true ,因为尽管内部元素的类型不同,但两个对象都是向量。 在编译时进行检查很重要(这就是该函数为constexpr的原因)。 #include #include #include 模板 ..
发布时间:2020-09-27 04:46:17 C/C++开发

可移动类型的类型特征?

我正在尝试编写一个模板,如果T具有move构造函数,则该模板将表现为一种方式,如果T没有其构造,则其行为将呈现另一种方式。我试图寻找一种可以识别出这种特征的类型特征,但是没有运气,为此我尝试写出自己的类型特征的尝试失败了。 任何帮助表示感谢。 解决方案 我觉得有必要指出一个细微的区别。 虽然 确实提供了 std :: is_move_construc ..
发布时间:2020-09-27 03:18:49 C/C++开发

结构化绑定宽度

是否可以确定我应该使用结构化绑定语法在方括号中指定多少个变量名,以匹配简单的右侧 struct 数据成员的数量我想成为通用库的一部分,该库使用结构化绑定将任意类分解为其组成部分。目前没有结构化绑定的可变版本(并且我认为不能针对当前的语法提出),但是我的第一个想法是对某些函数 decompose()进行重载。,它将 struct 参数分解为一组其成分。 decompose()应该重载参数数据成员(即 ..