typetraits相关内容

检测类型是否为 std::tuple?

目前我有两个功能: templatebool f(类型* x);模板bool f(std::tuple* x); 有什么方法可以将这两个函数与一个额外的模板参数合并,该参数指示传递的类型是否为元组? template 解决方案 当然,使用 is_specialization_of(链接取自 这里): template::value>bool f(类 ..
发布时间:2022-01-20 00:04:58 C/C++开发

是大括号可构造的类型特征

如何检查特定类型 typename T 是否可从参数 typename ...Args 以 T{Args...} 的方式构造代码>?我知道 std::is_constructible 来自 的类型特征,但它使用括号,而不是花括号.我在编写类型特征方面没有太多经验,因此无法提供初始示例.作为简化,我们可以接受任何合理的断言,即使这不会导致一般性的 ..
发布时间:2021-12-24 15:10:24 C/C++开发

编译时模板实例化检查

是否可以在编译时检查模板类型是否已实例化,以便我可以在 enable_if 专业化中使用此信息? 假设我有 template 结构已知类型{}; 如果 known_type 在编译时实例化,我可以以某种方式定义一些值为 true 的 is_known_type 吗? 解决方案 如果您利用特定表达式可能会或可能不会在需要 constexpr 的地方使用这一事实,则可以这样做,并且您 ..
发布时间:2021-12-13 19:23:08 C/C++开发

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

我在某处听说,使用新的 C++1z 语法,检查类型是否在可变参数模板参数包中传递非常容易 - 显然,您可以使用接近一行的代码来执行此操作.这是真的?这些相关功能是什么?(我尝试查看折叠表达式,但我不知道如何在该问题中使用它们...) 以下是我在 C++11 中解决问题的方法以供参考: #include 模板结构包含;模板结构体包含{静态 constexpr bool 值 = 假;};tem ..
发布时间:2021-12-13 19:14:27 C/C++开发

消除作为模板参数传递的重载成员函数指针的歧义

我正在尝试重新创建观察者模式,我可以完美地将参数转发给观察者的给定成员函数. 如果我尝试传递具有多重覆盖的成员函数的地址,它无法根据参数推断出正确的成员函数. #include #include #include 模板结构观察者列表{模板void call(Ret (Class::*func)(Args...), UArgs&&... args){对于(自动对象:_observers){( ..
发布时间:2021-12-13 19:01:35 C/C++开发

如何编写`is_complete`模板?

在回答这个问题后,我试图找到is_complete Boost 库中的模板,我意识到 Boost.TypeTraits 中没有这样的模板.为什么Boost库中没有这样的模板?它应该是什么样子? //!检查类型是否完整模板结构 is_complete{静态常量布尔值 = ( sizeof(T) > 0 );};...//所以我可以这样使用它BOOST_STATIC_ASSERT( boost::i ..
发布时间:2021-12-13 18:36:03 C/C++开发

编译器如何处理编译时分支?

编辑:我以“if/else"情况为例,有时可以在编译时解决(例如,当涉及静态值时,参见 ).将下面的答案改编为其他类型的静态分支(例如,多个分支或多标准分支)应该很简单.请注意,使用模板元编程的编译时分支不是这里的主题. 在这样的典型代码中 #include 模板T numeric_procedure(const T& x){if ( std::is_integral::value ){/ ..
发布时间:2021-12-12 13:18:21 C/C++开发

使用模板参数包代替宏

我正在阅读 Andrei Alexandrescu 的现代 C++ 设计,我正在尝试使用他提供的一些类型列表示例.在下面的示例中,我想创建一个包含类型和整数的 Option 结构的列表.后来我想创建这些选项的类型列表,然后将它与一个整数一起传递给另一个结构 FindTypeForMapping.如果整数匹配选项列表中设置的任何整数,则表达式应计算为该选项的类型,否则应计算为我的自定义类型 Null ..
发布时间:2021-09-12 18:40:41 C/C++开发

别名模板不是类模板?

我正在尝试编写一个类型特征来检测一个类型是否具有某种类型的 T::type.我正在使用此答案中的代码.作为参考,这是我正在使用的代码的一部分: //参见 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4502.pdf.模板 使用 void_t = void;//主模板处理所有不支持操作的类型.模板类,类 ..
发布时间:2021-09-12 18:40:35 C/C++开发

使用 c++20 检查 type 是否具有某些值类型和关键字 value_type 本身

我有以下代码 #include template需要 std::is_integral&&std::is_floating_point&&std::is_floating_point 我基本上想确保模板参数具有某些类型,整型或浮点型.有两个问题: 代码无法编译.抱怨它需要 '(' 进行函数样式转换或类型构造.不知道为什么? 我假设 T、U、Tout 都有关键字 value_type.如 ..
发布时间:2021-09-12 18:40:27 C/C++开发