作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
C++中有两个可以在类型和变量上调用的运算符:sizeof
和typeid
。
假设我们想用类似的行为something like *实现我们自己的操作:
template<bool is_type>
struct type_traits_T;
template<>
struct type_traits_T<true> {
template<typename T>
struct type_traits {
using mydecltype = T;
// and other stuff...
};
};
template<>
struct type_traits_T<false> {
template<auto VAR>
struct type_traits:
type_traits_T<true>::type_traits<decltype(VAR)> {};
};
使用宏可以很好地工作:
#define type_traits(V) type_traits_T<is_type(V)>::type_traits<V>
上面缺少的部分是
is_type(V)
部分。
is_type(V)
是类型,是否有一种方法可以实现
true
生成的
V
,如果
V
是变量,则为false?如果没有,是否有办法用
static reflection proposal实现呢?
最佳答案
您可以使用功能模板:
template<typename>
constexpr bool is_type() {
return true;
}
template<auto>
constexpr bool is_type() {
return false;
}
#define type_traits(V) type_traits_T<is_type<V>()>::type_traits<V>
关于c++ - 创建一个可以同时在类型和变量上调用的类型特征,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64064967/
我是一名优秀的程序员,十分优秀!