bitset 的名字告诉我什么?
what is the name of bitset telling me?
这是一个简单的代码片段,用于给出自动日期类型的名称。所以我想知道 bitset 会有什么标识符。它 returns : "St6bitsetILm32EE"。好的,bitset 是数据类型,32 是大小,我不确定这个名字还告诉我什么。我不知道 St6、I、LM 或 EE 指的是什么。澄清会很好。
// C++ program to demonstrate working of auto
// and type inference
#include <bits/stdc++.h>
using namespace std;
#define M 32
int main()
{
auto x = 5; //i for integer
auto y = 3.37; //D for double
auto ptr = &x; //Pi for pointer
auto z = "WTF";//PKc for string or char**
bitset <M> bset(2);
auto k = bset; //bitset :: St6bitsetILm32EE
cout << typeid(x).name() << endl
<< typeid(y).name() << endl
<< typeid(k).name() << endl
<< typeid(ptr).name() << endl
<< typeid(z).name() << endl;
return 0;
}
请原谅我的评论,我真的只是了解了 auto 数据类型。
C++ 中的名称是 mangled。
我猜这个名字已经根据 Itanium C++ ABI 规则被破坏了。规则指定每个 type/identifier/function 名称如何被破坏。从那里你可以尝试手动 demangle 类型:
St
是 <substitution>
。用于压缩::std::
命名空间前缀。
6
是 <number>
。然后它编码以下标识符的长度。接下来的 6 个字符构成标识符。
bitset
是 <identifier>
。它有6个字符。就是这个class. 的标识符
I
开始 <template-args>
。它是模板参数列表。
- 然后是一个
<template-arg>
L
开始 <expr-primary>
。
m
是 <type>
。这是模板参数的类型,而不是它的值。 m
表示类型为unsigned long
.
32
是作为模板参数传递的值。 32
不是这里的尺寸
E
结束 <expr-primary>
。
E
结束 <template-args>
。
所以 St6bitsetILm32EE
是类型 ::std::bitset<(unsigned long)32>
的错位名称。
这是一个简单的代码片段,用于给出自动日期类型的名称。所以我想知道 bitset 会有什么标识符。它 returns : "St6bitsetILm32EE"。好的,bitset 是数据类型,32 是大小,我不确定这个名字还告诉我什么。我不知道 St6、I、LM 或 EE 指的是什么。澄清会很好。
// C++ program to demonstrate working of auto
// and type inference
#include <bits/stdc++.h>
using namespace std;
#define M 32
int main()
{
auto x = 5; //i for integer
auto y = 3.37; //D for double
auto ptr = &x; //Pi for pointer
auto z = "WTF";//PKc for string or char**
bitset <M> bset(2);
auto k = bset; //bitset :: St6bitsetILm32EE
cout << typeid(x).name() << endl
<< typeid(y).name() << endl
<< typeid(k).name() << endl
<< typeid(ptr).name() << endl
<< typeid(z).name() << endl;
return 0;
}
请原谅我的评论,我真的只是了解了 auto 数据类型。
C++ 中的名称是 mangled。
我猜这个名字已经根据 Itanium C++ ABI 规则被破坏了。规则指定每个 type/identifier/function 名称如何被破坏。从那里你可以尝试手动 demangle 类型:
St
是<substitution>
。用于压缩::std::
命名空间前缀。6
是<number>
。然后它编码以下标识符的长度。接下来的 6 个字符构成标识符。bitset
是<identifier>
。它有6个字符。就是这个class. 的标识符
I
开始<template-args>
。它是模板参数列表。- 然后是一个
<template-arg>
L
开始<expr-primary>
。m
是<type>
。这是模板参数的类型,而不是它的值。m
表示类型为unsigned long
.32
是作为模板参数传递的值。32
不是这里的尺寸
E
结束<expr-primary>
。
- 然后是一个
E
结束<template-args>
。
所以 St6bitsetILm32EE
是类型 ::std::bitset<(unsigned long)32>
的错位名称。