我想以通用的方式獲取返回類型std::begin。我目前的解決方案是: using type = decltype(std::begin(std::declval<T>()));
它工作時T = std::vector<int>。但我不明白爲什麼下面不工作: using type = decltype(std::begin(std::declval<int[3]>()));
我得到的錯誤:
class A {
public:
int num;
A (int param) : num(param) {}
operator decltype(auto)(){ return num; }
};
class B {
public:
int num;
A objA;
B (int param) :
我發現它們不同,語言標準說明每個語句應該檢索哪種類型(變量和表達式之間的區別)。但我真的很想知道爲什麼這兩種類型應該有所不同? #include<stdio.h>
int x=0;
decltype((x)) y=x;
int main()
{
y=2;
printf("%d,",x);
decltype((1+2))&z=x;//OK (1+2) is an
我在想,decltype((X))給予&引用類型,但一些實驗表明某事別人: #include<stdio.h>
int main(){
int x = 0;
decltype((x)) r = x;
r = 1;
printf("%d\n",x);
decltype((x+1)) i = x;
i = 2;
printf("