- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
#include <iostream>
#include <type_traits>
int main(){
//creating an integral constant with constexpr
constexpr unsigned int speed_of_light{299792458};
//creating an integral constant with std::integral_constant
typedef std::integral_constant<unsigned int, 299792458> speed_of_light_2;
//using them
std::cout << speed_of_light/2 << '\n';
std::cout << speed_of_light_2::value/2 << '\n';
}
std::integral_constant
有什么特别之处,我会选择使用它而不是 constexpr
?
他们的行为和用例看起来和我一模一样。我正在尝试考虑某种模板场景,其中 constexpr 可能不够。
最佳答案
模板 integral_constant
定义一个类型,关键字constexpr
定义一个常数。例如 std::true_type
是 std::integral_constant<bool, true>
.
其中一个用法示例是 tag-dispatching
.
template<typename T>
void use_impl(const T&, std::false_type)
{
}
template<typename T>
void use_impl(const T&, std::true_type)
{
}
template<typename T>
void use(const T& v)
{
use_impl(v, typename std::is_integral<T>::type());
}
关于c++ - 我什么时候会在 constexpr 上使用 std::integral_constant?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20368187/
MSVC 和 clang/gcc 对于是否可以在三元运算符中使用两个不同的整型常量(以及它们是否具有 common_type)存在分歧: #include int main() { retu
我想将传递给函数的编译时间常量整数捕获为模板类型。 future 的目标是推出我自己的(非常有限的)表达式模板,该模板从非常简单的表达式(编译时常量 int 和 in 变量的总和)创建表达式,例如:-
我刚刚进入元编程,正在 youtube 上观看 Cppcon channel ,并看到了这个 std::integral_constant ,但找不到它的用途。 据我所知,这是一种将值与其类型一起“打
您能否解释一下,为什么以下示例中的 integral_constant 和 constexpr 方法会导致不同的行为? #include using namespace std; struct Lo
利用Scott Schurr's str_const我有一个 constexpr 字符串。 class StrConst { public: template constexpr St
它的实际用例是什么? std::integral_constant 我可以理解这是一个值为 2 的包装器: typedef std::integral_constant two_t 但为什么不直接使用
考虑这段代码 #include #include enum Thing {Thing0, Thing1, Thing2, NumThings}; enum Object {Object0, Obj
在C++标准库中,有没有对integral_constant进行 bool 运算的模板类型? (其中 X 是 true 或 false )? 作为一个简单的例子,您有两个这样的函数重载: void f
昨天我读了一个blog entry关于将编译时已知函数参数从 constexpr 函数转换为类似 std::integral_constant<> 的类型. 一个可能的用法示例是从用户定义的文字转换类
我想创建一个 std::integral_constant 的“容器版本”。这是一个用元素类型和非类型参数参数化的类型: enum class A { a = 1 struct static
很抱歉问了这么简单的问题,但我无法轻易找到答案。 Google 对“C++ 否定 integral_constant”和类似查询没有任何有趣的说法。 在 C++11 中是否有任何特征使 std::tr
查看 std::is_same 的实现我们可以看到一些内部函数(继承自 integral_constant )。为了方便起见,让我复制 g++ 代码: template struct inte
我有几种类型,我想“绑定(bind)”一个 std::integral_constant编译时每种类型的顺序 ID 值。 例子: struct Type00 { }; struct Type01 {
我设法转换了一个 template struct List到 integral_constant 的列表但是,是否可以从 integral_constant 转换为回到int是吗? 以下是我如何从 I
#include #include int main(){ //creating an integral constant with constexpr constexpr uns
我想从 char* 和“kernel32.dll”中获取整数常量,但总是失败。以下是我失败的尝试,谁能告诉我正确的用法? error 1: cout ::value ::value ::value (
在C++14标准中,std::integral_constant模板定义如下: template struct integral_constant { static constexpr T va
#include #include #include #include template auto make_index_dispatcher(std::index_sequence) {
假设我有一个 hana::integral_constant 的元组,如下所示: auto tuple_of_int_const = hana::make_tuple(hana::integral_c
从 C++20 开始可以使用 auto实现整数常量的模板参数: Try it online! template struct integral_constant2 : std::integr
我是一名优秀的程序员,十分优秀!