พิจารณาฟังก์ชันอินไลน์ต่อไปนี้:
// 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ระบุทำ (หรือบางทีฉันอาจจะเข้าใจวลีของคุณผิด)