พิจารณาฟังก์ชันอินไลน์ต่อไปนี้:
// Inline specifier version
#include<iostream>
#include<cstdlib>
inline int f(const int x);
inline int f(const int x)
{
return 2*x;
}
int main(int argc, char* argv[])
{
return f(std::atoi(argv[1]));
}
และเวอร์ชันที่เทียบเท่า constexpr:
// Constexpr specifier version
#include<iostream>
#include<cstdlib>
constexpr int f(const int x);
constexpr int f(const int x)
{
return 2*x;
}
int main(int argc, char* argv[])
{
return f(std::atoi(argv[1]));
}
คำถามของฉันคือ: ตัวconstexpr
ระบุบ่งบอกถึงตัวinline
ระบุหรือไม่ในแง่ที่ว่าถ้าอาร์กิวเมนต์ที่ไม่ใช่ค่าคงที่ถูกส่งผ่านไปยังconstexpr
ฟังก์ชันคอมไพเลอร์จะพยายามinline
ใช้ฟังก์ชันราวกับว่ามีการinline
ระบุตัวระบุไว้ในการประกาศหรือไม่
มาตรฐาน C ++ 11 รับประกันหรือไม่?
inline
ระบุไม่มีส่วนเกี่ยวข้องกับการซับใน
inline
เกี่ยวข้องโดยตรงกับการฝังใน จึงไม่มีการconstexpr
ระบุไม่ได้หมายความinline
ระบุในความรู้สึกว่าเป็นที่ความรู้สึกไม่อยู่
inline
ระบุทำ (หรือบางทีฉันอาจจะเข้าใจวลีของคุณผิด)