Với tiêu chuẩn C++ 11 mới, khi nào tôi nên sử dụng từ khóa inline
trên từ khóa constexpr
? Liệu từ khóa constexpr
có cung cấp bất kỳ tối ưu hóa bổ sung nào qua số inline
hay không chỉ đơn thuần khẳng định rằng mọi thứ phải được tính toán tại thời gian biên dịch?nội tuyến so với constexpr?
Tại sao constexpr
hoạt động trên GCC trong một số trường hợp cuộc gọi không liên tục, chẳng hạn như gọi foo(x)
trên biến số không constexpr
? Đây có phải là một lỗi trong GCC hay nó thực sự là một phần của tiêu chuẩn?
Theo [câu hỏi này] (http://stackoverflow.com/q/7065200/636019), khi các hàm 'constexpr' không được sử dụng trong ngữ cảnh yêu cầu biểu thức không đổi, trình biên dịch không bắt buộc phải tính biểu thức tại thời gian biên dịch. – ildjarn
nhưng nó vẫn xác định rằng tính toán * có thể * được thực hiện tại thời gian biên dịch. Vì vậy, với 'inline', nó không thực sự là về tối ưu hóa, nhưng nó có thể cung cấp thêm thông tin mà trình biên dịch có thể sử dụng để tối ưu hóa. – jalf
Đúng vậy, tôi chỉ đang sử dụng từ "phải" thôi. : -] – ildjarn