为什么N = 3
vals = np.random.choice(df['label'].unique(), N, replace=False)
print (vals)
['C' 'A' 'B']
df = df.set_index('label').loc[vals].reset_index()
print (df)
label val
0 C x5
1 C x6
2 A x1
3 A x2
4 B x3
5 B x4
为a
,true
为b
?或者换句话说,为什么false
中的T
为foo1
,但返回类型int const
只是foo2
?
int
答案 0 :(得分:6)
名为const int foo2<const int>(const int&);
的专精化的返回类型为const int
,因此foo2(x)
将是const int
类型的prvalue。但是,没有const
(或volatile
)非数组,非类类型的prvalues(在您的情况下,int
)。常量调整为"prior to any further analysis",它变为int
类型的prvalue,decltype
报告。
答案 1 :(得分:2)
如果函数返回类型是非类非数组类型,则忽略const限定符。如果你使用某个类而不是普通int
,它将产生1 1:
struct Bar{};
int main()
{
Bar const x{};
constexpr bool a = foo1(x);
constexpr bool b = std::is_const<decltype(foo2(x))>::value;
}