Hãy xem xét hàm nội tuyến sau:
// 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]));
}
và phiên bản tương đương của 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]));
}
Câu hỏi của tôi là: liệu trình constexpr
xác định có ngụ ý trình inline
xác định theo nghĩa là nếu một đối số không phải là hằng số được truyền cho một constexpr
hàm, trình biên dịch sẽ cố gắng thực inline
hiện hàm như thể trình inline
xác định được đưa vào khai báo của nó không?
Tiêu chuẩn C ++ 11 có đảm bảo điều đó không?
inline
cụ xác định không còn liên quan gì đến nội tuyến nữa
inline
có liên quan trực tiếp đến nội tuyến. Vì vậy, không, các constexpr
specifier không bao hàm các inline
specifier trong ý nghĩa đó, như là cảm giác không tồn tại.
inline
xác định làm. (Hoặc có thể tôi đã hiểu sai cách diễn đạt của bạn.)