所有内容都可以转换为的类型
A type to which everything can be converted to?
我在 C++14 中有一个类型T
,这样std::is_convertible<T, X>::value
为所有可能X
返回true
?
你当然可以自己做一个:
#include <string>
#include <type_traits>
struct Foo
{
template <class T>
operator T();
};
int main()
{
struct Bar{};
static_assert(std::is_convertible<Foo, int>::value, "");
static_assert(std::is_convertible<Foo, std::string>::value, "");
static_assert(std::is_convertible<Foo, Bar>::value, "");
return 0;
}
正如我们可以定义class B {~B() = delete;}
;
我们可以得出结论,对于任何给定的 T 类型,始终存在至少一个 T 不能转换为的类型 X。
如果你想要的只是元函数总是返回 true,比如因为你正在编写一些超级元函数并且需要一些布尔逻辑的占位符,那么我只是犯罪并专门化模板:
struct everything {};
namespace std {
template<typename X>
struct is_convertible<everything, X> : true_type {};
};
虽然,诚然,这个答案做得更好,因为它不会闯入std
命名空间并开始破坏模板。
否则,不,没有这样的类型。至少没有会为你生成有效对象的类型。
相关文章:
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- C++中的双指针类型转换
- 逐位操作的隐式类型转换
- 模板中的类型转换
- 在 C++(和 C)中进行类型转换时明显不一致
- 字符类型转换不兼容
- 将复杂的非基元C++数据类型转换为 Erlang/Elixir 格式,以使用 NIF 导出方法
- C++:用户定义的显式类型转换函数错误
- 将类指针类型转换为键时出错
- 通过引用传递参数时C++类型转换
- 在 C++ 中将一个模板类型的对象类型转换为另一个模板类型
- C++显式类型转换(C 样式强制转换)的强制表示法和static_cast的多种解释
- C++无效的函数类型转换
- 在将派生类指针类型转换为派生类指针后,从基类指针调用派生类函数
- 如何将Windows产品类型转换为名称?
- 通过构造函数方法输出的类到类类型转换是 5500 为什么不是 5555
- 事件系统:使用类型转换或联合进行继承
- 如何在参数中定义隐式类型转换的构造函数?
- 类模板实例化中的类型转换