typetraits相关内容
正在尝试实现the following code: template concept SizedRangeOf = std::ranges::sized_range && std::same_as, V>; template cons
..
假设我们创建了两个type_of函数,它们返回std::type_identity,like: template auto type_of() { return std::type_identity{}; } template auto type_of() { return std::type_ide
..
#include int main() { auto f1 = [](auto&) mutable {}; static_assert(std::is_invocable_v); // ok auto const f2 = [](auto&) {}; static_assert(std::is_
..
目前我有两个功能: templatebool f(类型* x);模板bool f(std::tuple* x); 有什么方法可以将这两个函数与一个额外的模板参数合并,该参数指示传递的类型是否为元组? template 解决方案 当然,使用 is_specialization_of(链接取自 这里): template::value>bool f(类
..
考虑以下代码: #include #include int main(int argc, char* argv[]){std::cout::value = "::value::value = "::value::value = "::value::value = " 结果是: std::is_same::value = 1std::is_same
..
我正在尝试编写 is_iterator 类型特征.当 T 是迭代器类型时 is_iterator::value == true 否则是 is_iterator::value == false. 到目前为止我尝试了什么: 模板结构 is_iterator : std::false_type {};模板s
..
如何检查特定类型 typename T 是否可从参数 typename ...Args 以 T{Args...} 的方式构造代码>?我知道 std::is_constructible 来自 的类型特征,但它使用括号,而不是花括号.我在编写类型特征方面没有太多经验,因此无法提供初始示例.作为简化,我们可以接受任何合理的断言,即使这不会导致一般性的
..
是否可以在编译时检查模板类型是否已实例化,以便我可以在 enable_if 专业化中使用此信息? 假设我有 template 结构已知类型{}; 如果 known_type 在编译时实例化,我可以以某种方式定义一些值为 true 的 is_known_type 吗? 解决方案 如果您利用特定表达式可能会或可能不会在需要 constexpr 的地方使用这一事实,则可以这样做,并且您
..
如何在编译时测试B类是否是从std::vector派生的? template结构 is_derived_from_vector {静态常量布尔值 = ????;}; 如何在编译时测试B类是否派生自模板族? 模板结构 is_derived_from_template {静态常量布尔值 = ????;}; 使用: template结构 X {};结构A:X{}结构 B : std::vect
..
我在某处听说,使用新的 C++1z 语法,检查类型是否在可变参数模板参数包中传递非常容易 - 显然,您可以使用接近一行的代码来执行此操作.这是真的?这些相关功能是什么?(我尝试查看折叠表达式,但我不知道如何在该问题中使用它们...) 以下是我在 C++11 中解决问题的方法以供参考: #include 模板结构包含;模板结构体包含{静态 constexpr bool 值 = 假;};tem
..
我正在尝试重新创建观察者模式,我可以完美地将参数转发给观察者的给定成员函数. 如果我尝试传递具有多重覆盖的成员函数的地址,它无法根据参数推断出正确的成员函数. #include #include #include 模板结构观察者列表{模板void call(Ret (Class::*func)(Args...), UArgs&&... args){对于(自动对象:_observers){(
..
在回答这个问题后,我试图找到is_complete Boost 库中的模板,我意识到 Boost.TypeTraits 中没有这样的模板.为什么Boost库中没有这样的模板?它应该是什么样子? //!检查类型是否完整模板结构 is_complete{静态常量布尔值 = ( sizeof(T) > 0 );};...//所以我可以这样使用它BOOST_STATIC_ASSERT( boost::i
..
下面的代码是如何工作的? typedef char (&yes)[1];typedef char (&no)[2];模板 结构主机{运算符 B*() 常量;运算符 D*();};模板 结构 is_base_of{模板 静态是检查(D *,T);静态不检查(B*,int);static const bo
..
编辑:我以“if/else"情况为例,有时可以在编译时解决(例如,当涉及静态值时,参见 ).将下面的答案改编为其他类型的静态分支(例如,多个分支或多标准分支)应该很简单.请注意,使用模板元编程的编译时分支不是这里的主题. 在这样的典型代码中 #include 模板T numeric_procedure(const T& x){if ( std::is_integral::value ){/
..
我正在阅读 Andrei Alexandrescu 的现代 C++ 设计,我正在尝试使用他提供的一些类型列表示例.在下面的示例中,我想创建一个包含类型和整数的 Option 结构的列表.后来我想创建这些选项的类型列表,然后将它与一个整数一起传递给另一个结构 FindTypeForMapping.如果整数匹配选项列表中设置的任何整数,则表达式应计算为该选项的类型,否则应计算为我的自定义类型 Null
..
在 C++17 中,我知道我可以写: #include 结构体A{size_t operator()(double x) const { return 1;};};int main(){static_assert(std::is_invocable_r_v);} 但是现在我想使用 std::is_invocable 来测试任意方法的存在(这里是 size(double) 方法): #incl
..
我正在尝试编写一个类型特征来检测一个类型是否具有某种类型的 T::type.我正在使用此答案中的代码.作为参考,这是我正在使用的代码的一部分: //参见 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4502.pdf.模板 使用 void_t = void;//主模板处理所有不支持操作的类型.模板类,类
..
我以这种方式使用 std::unique_ptr: template 使用 my_unique_ptr = std::unique_ptr, std::integral_constant; 它似乎在 Pointer = void* 时工作,但是当尝试在这样的 my_unique_ptr 上使用重置时,我收到此错误: 从 'SampleType' {aka 'void*'} 到 'std::u
..
我正在寻找一种具有固定上限的字符串实现,它可以在 memcopy 环境中使用,并且可以简单地构造和复制. 我发现 boost beast static_string,但 IDK 如果我的 example 是偶然工作还是没有?> #include #include #include boost::beast::static_strings1("abc");int main(){boost::
..
我有以下代码 #include template需要 std::is_integral&&std::is_floating_point&&std::is_floating_point 我基本上想确保模板参数具有某些类型,整型或浮点型.有两个问题: 代码无法编译.抱怨它需要 '(' 进行函数样式转换或类型构造.不知道为什么? 我假设 T、U、Tout 都有关键字 value_type.如
..