草庐IT

typetraits

全部标签

c++ - 为什么 make_optional 会衰减它的参数类型?

(可能不是C++14,可能是LibraryTS)工具make_optional被定义(inn3672)为:templateconstexproptional::type>make_optional(T&&v){returnoptional::type>(std::forward(v));}为什么要转换类型T(即不只是返回optional),并且是否有使用decay的哲学(以及实际)理由具体作为转型? 最佳答案 decay的一般用途就是取一个类型,修改为适合存储。看看这些decay的例子工作,而remove_reference不会:a

c++ - 为什么 make_optional 会衰减它的参数类型?

(可能不是C++14,可能是LibraryTS)工具make_optional被定义(inn3672)为:templateconstexproptional::type>make_optional(T&&v){returnoptional::type>(std::forward(v));}为什么要转换类型T(即不只是返回optional),并且是否有使用decay的哲学(以及实际)理由具体作为转型? 最佳答案 decay的一般用途就是取一个类型,修改为适合存储。看看这些decay的例子工作,而remove_reference不会:a

c++ - ‘is_trivially_copyable’ 不是 ‘std’ 的成员

我的gcc版本是4.8.320140624。我可以使用is_pod、is_trivial、is_standard_layout,但尝试is_trivially_copyable时失败、is_constructible和is_default_constructible,也许更多。错误信息是'xxx'isnotamemberof'std'。这里有什么问题?他们甚至被当前的GCC支持吗?谢谢! 最佳答案 正如其他人提到的,GCC版本std::is_trivially_copyable。这里有一个破解这个限制的方法://workaround

c++ - ‘is_trivially_copyable’ 不是 ‘std’ 的成员

我的gcc版本是4.8.320140624。我可以使用is_pod、is_trivial、is_standard_layout,但尝试is_trivially_copyable时失败、is_constructible和is_default_constructible,也许更多。错误信息是'xxx'isnotamemberof'std'。这里有什么问题?他们甚至被当前的GCC支持吗?谢谢! 最佳答案 正如其他人提到的,GCC版本std::is_trivially_copyable。这里有一个破解这个限制的方法://workaround

c++ - 我们需要 std::as_const() 做什么?

C++11给了我们std::add_const;使用C++17,我们有一个新结构-std::as_const().前者只是在您提供的类型之前添加一个const。第二个是适当的(a的模板)函数,而不是类型特征,它似乎做同样的事情-除了当类型是右值引用时,在这种情况下它不能使用。我不太明白提供std::as_const()的动机。为什么除了std::add_const之外我们还需要它? 最佳答案 “需要”是一个强词...std::as_const存在是因为它有用,而不是绝对必要。由于它是一个函数而不是一个trait,我们可以使用它来“添

c++ - 我们需要 std::as_const() 做什么?

C++11给了我们std::add_const;使用C++17,我们有一个新结构-std::as_const().前者只是在您提供的类型之前添加一个const。第二个是适当的(a的模板)函数,而不是类型特征,它似乎做同样的事情-除了当类型是右值引用时,在这种情况下它不能使用。我不太明白提供std::as_const()的动机。为什么除了std::add_const之外我们还需要它? 最佳答案 “需要”是一个强词...std::as_const存在是因为它有用,而不是绝对必要。由于它是一个函数而不是一个trait,我们可以使用它来“添

c++ - C++17 中已弃用的 std::is_literal_type

根据cppreference,性状std::is_literal_type在C++17中已弃用。问题是为什么和首选替代品是什么以供将来检查类型是否为literaltype. 最佳答案 AsstatedinP0174:Theis_literaltypetraitoffersnegligiblevaluetogenericcode,aswhatisreallyneededistheabilitytoknowthataspecificconstructionwouldproduceconstantinitialization.Thecor

c++ - C++17 中已弃用的 std::is_literal_type

根据cppreference,性状std::is_literal_type在C++17中已弃用。问题是为什么和首选替代品是什么以供将来检查类型是否为literaltype. 最佳答案 AsstatedinP0174:Theis_literaltypetraitoffersnegligiblevaluetogenericcode,aswhatisreallyneededistheabilitytoknowthataspecificconstructionwouldproduceconstantinitialization.Thecor

c++ - 如何在 C++11 中检测一个类是否是最终的?

代码优先。#includeusingnamespacestd;structAfinal{};structB{};intmain(){cout::value::valueis_final类如何实现? 最佳答案 作为GCC__is_finalintrinisic(forPR51365)的实现者,我很确定它不能在库中完成,它需要编译器支持。您可以使用C++11的SFINAE表达式功能做一些非常聪明的事情,但是要检测一个类是否是最终类,您需要从它派生,并在模板参数推导上下文中实例化派生类型,但是从类派生是在声明而不是表达式中完成的。此外,您

c++ - 如何在 C++11 中检测一个类是否是最终的?

代码优先。#includeusingnamespacestd;structAfinal{};structB{};intmain(){cout::value::valueis_final类如何实现? 最佳答案 作为GCC__is_finalintrinisic(forPR51365)的实现者,我很确定它不能在库中完成,它需要编译器支持。您可以使用C++11的SFINAE表达式功能做一些非常聪明的事情,但是要检测一个类是否是最终类,您需要从它派生,并在模板参数推导上下文中实例化派生类型,但是从类派生是在声明而不是表达式中完成的。此外,您