ããŽããŧã¸ã¯C++20ãĢæĄį¨ãããč¨čĒæŠčŊãŽå¤æ´ãč§ŖčĒŦããĻããžãã
ãŽãĄãŽC++čĻæ ŧã§ãããĢ夿´ãããå ´åãããããéĸéŖé įŽãåį §ããĻãã ããã
æĻčĻ
C++11ã§å°å ĨãããééįãĄãŗã夿°ãŽåæååã§ã¯ããããããŖãŧãĢãã¯å¯žčąĄå¤ã§ããŖãã
C++20ã§ã¯ããããããŖãŧãĢããŽãĄãŗã夿°ããåŽįžŠæãĢåæåãã§ãããããĢãĒãã
struct X {
int x : 6 = 8; // 6ããããæã¤ãããããŖãŧãĢããĄãŗã夿°xããå¤8ã§åæå
int y : 2 {1}; // 2ããããæã¤ãããããŖãŧãĢããĄãŗã夿°yããå¤1ã§åæå
};
ãã ãäģĨä¸ãŽãããĒįļæŗã§ã¯ãæéˇããããĢããŖãĻæåŗéããĢåäŊããĒãå ´åãããīŧ
int bits;
struct X {
int a : true ? 8 : bits = 2; // int a : (true ? 8 : bits = 2)
int b : 1 || new int { 0 }; // int b : (1 || new int {0})
};
ããããŖãå ´åãĢã¯ã丸ãĢããŗã§å˛ãžãĒããã°ãĒããĒãīŧ
int bits;
struct X {
int a : (true ? 8 : bits) = 2;
int b : (1 || new int) { 0 };
};
äģæ§
-
ãããããŖãŧãĢãåæåãŽæ§æã¯äģĨä¸ãŽãããĢãĒãīŧ
å 夿°å(įįĨå¯) åąæ§(įįĨå¯) : åŽæ°åŧãŽãããåš (įįĨå¯) æŗĸãĢããŗãããã¯äģŖå Ĩæ§æãĢããåæåå(įįĨå¯) -
ãããããŖãŧãĢããŽåæå¤ã¯ãéãããããŖãŧãĢããŽãĄãŗã夿°åæåã¨åæ§ãĢãããŠãĢãå¤ã§ããããŗãŗãšããŠã¯ãŋã§æį¤ēįãĢãããããŖãŧãĢããåæåããå ´åããããŠãĢãå¤ã§ã¯ãĒãæåŽãããåæå¤ã§åæåããã
äž
#include <iostream>
struct X {
int a : 6 = 8;
int b : 2 {1};
};
int main()
{
X x;
std::cout << x.a << std::endl;
std::cout << x.b << std::endl;
}
åēå
8
1