//
// Created by light on 19-11-4.
//
#include
#include
using namespace std;
// 对äºä¿®é¥°Objectæ¥è¯´:
// constå¹¶æªåºååºç¼è¯æå¸¸éåè¿è¡æå¸¸é
// constexpréå®å¨äºç¼è¯æå¸¸é
// constexprä½ç¨ï¼ä¼å!æç!
// constexpr修饰ç彿°ï¼è¿åå¼ä¸ä¸å®æ¯ç¼è¯æå¸¸éãIt is not a bug, it is a feature.
// constä¿®é¥°çæ¯ç±»åï¼constexprä¿®é¥°çæ¯ç¨æ¥ç®åºå¼ç飿®µä»£ç ã
/**
* constexpr修饰ç彿°ï¼ç®åçæ¥è¯´ï¼å¦æå
¶ä¼ å
¥çåæ°å¯ä»¥å¨ç¼è¯æ¶æè®¡ç®åºæ¥ï¼é£ä¹è¿ä¸ªå½æ°å°±ä¼äº§çç¼è¯æ¶æçå¼ã
* 使¯ï¼ä¼ å
¥ç忰妿ä¸è½å¨ç¼è¯æ¶æè®¡ç®åºæ¥ï¼é£ä¹constexpr修饰ç彿°å°±åæ®é彿°ä¸æ ·äºãä¸
* @param i
* @return
*/
constexpr int foo(int i)
{
return i + 10;
}
int main()
{
int i = 10;
std::array arr; // OK
foo(i); // Call is Ok
std::array arr1; // error: the value of âiâ is not usable in a constant expression
}