军事网站建设怎么打,如何在国际上做网站,文案代写在哪里接单子,好网站建设公司地址类型特性 类型特性定义一个编译时基于模板的结构#xff0c;以查询或修改类型的属性。
试图特化定义于 type_traits 头文件的模板导致未定义行为#xff0c;除了 std::common_type 可依照其所描述特化。
定义于type_traits头文件的模板可以用不完整类型实例…类型特性 类型特性定义一个编译时基于模板的结构以查询或修改类型的属性。
试图特化定义于 type_traits 头文件的模板导致未定义行为除了 std::common_type 可依照其所描述特化。
定义于type_traits头文件的模板可以用不完整类型实例化除非另外有指定尽管通常禁止以不完整类型实例化标准库模板。
类型修改
类型修改模板通过应用修改到模板参数创建新类型定义。结果类型可以通过成员 typedef type 访问。 从给定类型移除 const 或/与 volatile 限定符
std::remove_cv,
std::remove_const,
std::remove_volatile template class T struct remove_cv; (1)(C11 起) template class T struct remove_const; (2)(C11 起) template class T struct remove_volatile; (3)(C11 起)
提供与 T 相同的成员 typedef type 除了其最顶层 cv 限定符被移除。
1) 移除最顶层 const 、最顶层 volatile 或两者若存在。
2) 移除最顶层 const
3) 移除最顶层 volatile
成员类型
名称定义type无 cv 限定符的 T
辅助类型 template class T using remove_cv_t typename remove_cvT::type; (C14 起) template class T using remove_const_t typename remove_constT::type; (C14 起) template class T using remove_volatile_t typename remove_volatileT::type; (C14 起) 可能的实现
template class T
struct remove_cv {typedef typename std::remove_volatiletypename std::remove_constT::type::type type;
};template class T struct remove_const { typedef T type; };
template class T struct remove_constconst T { typedef T type; };template class T struct remove_volatile { typedef T type; };
template class T struct remove_volatilevolatile T { typedef T type; };
调用示例
#include iostream
#include type_traitsint main()
{typedef std::remove_cvconst int::type CVtype1;typedef std::remove_cvvolatile int::type CVtype2;typedef std::remove_cvconst volatile int::type CVtype3;typedef std::remove_cvconst volatile int*::type CVtype4;typedef std::remove_cvint * const volatile::type CVtype5;std::cout std::is_sameint, std::remove_cvconst int::type::value: (std::is_sameint, CVtype1::value ? passed : failed) std::endl;std::cout std::is_sameint, std::remove_cvvolatile int::type::value: (std::is_sameint, CVtype2::value ? passed : failed) std::endl;std::cout std::is_sameint, std::remove_cvconst volatile int::type::value: (std::is_sameint, CVtype3::value ? passed : failed) std::endl;std::cout std::is_sameconst volatile int*, std::remove_cvconst volatile int*::type::value: (std::is_sameconst volatile int*, CVtype4::value ? passed : failed) std::endl;std::cout std::is_sameint*, std::remove_cvint * const volatile::type::value: (std::is_sameint*, CVtype5::value ? passed : failed) std::endl;std::cout std::endl;typedef std::remove_constconst int::type Ctype1;typedef std::remove_constvolatile int::type Ctype2;typedef std::remove_constconst volatile int::type Ctype3;typedef std::remove_constconst volatile int*::type Ctype4;typedef std::remove_constint * const volatile::type Ctype5;std::cout std::is_sameint, std::remove_constconst int::type::value: (std::is_sameint, Ctype1::value ? passed : failed) std::endl;std::cout std::is_sameint, std::remove_constvolatile int::type::value: (std::is_sameint, Ctype2::value ? passed : failed) std::endl;std::cout std::is_sameint, std::remove_constconst volatile int::type::value: (std::is_sameint, Ctype3::value ? passed : failed) std::endl;std::cout std::is_sameconst volatile int*, std::remove_constconst volatile int*::type::value: (std::is_sameconst volatile int*, Ctype4::value ? passed : failed) std::endl;std::cout std::is_sameint*, std::remove_constint * const volatile::type::value: (std::is_sameint*, Ctype5::value ? passed : failed) std::endl;std::cout std::endl;typedef std::remove_volatileconst int::type Vtype1;typedef std::remove_volatilevolatile int::type Vtype2;typedef std::remove_volatileconst volatile int::type Vtype3;typedef std::remove_volatileconst volatile int*::type Vtype4;typedef std::remove_volatileint * const volatile::type Vtype5;std::cout std::is_sameint, std::remove_volatileconst int::type::value: (std::is_sameint, Vtype1::value ? passed : failed) std::endl;std::cout std::is_sameint, std::remove_volatilevolatile int::type::value: (std::is_sameint, Vtype2::value ? passed : failed) std::endl;std::cout std::is_sameint, std::remove_volatileconst volatile int::type::value: (std::is_sameint, Vtype3::value ? passed : failed) std::endl;std::cout std::is_sameconst volatile int*, std::remove_volatileconst volatile int*::type::value: (std::is_sameconst volatile int*, Vtype4::value ? passed : failed) std::endl;std::cout std::is_sameint*, std::remove_volatileint * const volatile::type::value: (std::is_sameint*, Vtype5::value ? passed : failed) std::endl;std::cout std::endl;return 0;
}
输出
std::is_sameint, std::remove_cvconst int::type::value: passed
std::is_sameint, std::remove_cvvolatile int::type::value: passed
std::is_sameint, std::remove_cvconst volatile int::type::value:passed
std::is_sameconst volatile int*, std::remove_cvconst volatile int*::type::value: passed
std::is_sameint*, std::remove_cvint * const volatile::type::value: passedstd::is_sameint, std::remove_constconst int::type::value: passed
std::is_sameint, std::remove_constvolatile int::type::value: failed
std::is_sameint, std::remove_constconst volatile int::type::value:failed
std::is_sameconst volatile int*, std::remove_constconst volatile int*::type::value: passed
std::is_sameint*, std::remove_constint * const volatile::type::value: failedstd::is_sameint, std::remove_volatileconst int::type::value: failed
std::is_sameint, std::remove_volatilevolatile int::type::value: passed
std::is_sameint, std::remove_volatileconst volatile int::type::value:failed
std::is_sameconst volatile int*, std::remove_volatileconst volatile int*::type::value: passed
std::is_sameint*, std::remove_volatileint * const volatile::type::value: failed