34得票1回答
C++17中已废弃std::is_literal_type函数。

根据cppreference的说明,特性std::is_literal_type在C++17中已被弃用。问题是为什么以及未来检查类型是否为字面类型的首选替代方案是什么。

34得票2回答
我们为什么需要使用std::as_const()?

C++11给我们带来了std::add_const;而在C++17中,我们有了一个新的结构——std::as_const()。前者只是在您提供的类型之前添加一个const。后者是一个真正的(模板的)函数,而不是类型特征,它似乎做同样的事情——除非类型是右值引用,在这种情况下它不能使用。 我不...

34得票2回答
检测私有成员的存在

我想编写一个类型特征,以检查某个类型是否具有成员member。如果member是public的,那么有许多方法可以实现这一点(例如void_t),其中最简洁的可能是Yakk的can_apply(最终可能被称为std::is_detected): struct C { int memb...

32得票3回答
在C++中检查两种类型是否相等

如何在C++11中检查类型是否相等? std::uint32_t == unsigned; //#1 还有另一个片段 template<typename T> struct A{ string s = T==unsigned ? "unsigned" : "oth...

31得票8回答
如何编写 `is_complete` 模板?

回答完这个问题后,我试图在Boost库中找到is_complete模板,并意识到在Boost.TypeTraits中没有这样的模板。为什么在Boost库中没有这样的模板?它应该是什么样子的? //! Check whether type complete template<typena...

30得票2回答
如何检测一个方法是否是虚方法?

我尝试编写了一个特性来判断一个方法是否为virtual:(https://ideone.com/9pfaCZ) // Several structs which should fail depending if T::f is virtual or not. template <typ...

29得票2回答
检查成员是否存在,可能在基类中,C++11版本

在https://dev59.com/5nI-5IYBdhLWcg3wNle1#1967183中,提供了一种解决方案,用于静态检查成员是否存在于类型的子类中: template <typename Type> class has_resize_method { clas...

29得票4回答
检查参数包中所有类型是否可拷贝构造的类型特征

我需要一个类型特性来检查参数包中的所有类型是否可拷贝构造。目前为止,这是我已经完成的内容。主函数包含一些测试用例,以检查功能。#include <type_traits> #include <string> #include <memory> templ...

29得票6回答
限制C++模板的使用仅适用于POD类型

我有一个C ++模板类,只有在模板化类型为普通旧数据时才能正确运行。 任何具有执行任何操作的构造函数的内容都无法正常工作。 如果有人尝试这样做,我想以某种方式在编译时或运行时获得警告。//this should generate error myclass<std::string&gt...

28得票2回答
为什么不能调用一个带有auto&参数的const可变lambda表达式?

#include <type_traits> int main() { auto f1 = [](auto&) mutable {}; static_assert(std::is_invocable_v<decltype(f1), int&&...