11
Tại sao bản dịch này không biên dịch:
Có thể có vấn đề với một loại trả về string
?Chức năng trả về constexpr không biên dịch
constexpr std::string fnc()
{
return std::string("Yaba");
}
Tại sao bản dịch này không biên dịch:
Có thể có vấn đề với một loại trả về string
?Chức năng trả về constexpr không biên dịch
constexpr std::string fnc()
{
return std::string("Yaba");
}
Các constructor của std::string
mà phải mất một con trỏ đến char
không phải là constexpr
. Trong các hàm constexpr
, bạn chỉ có thể sử dụng các hàm constexpr
.
Cảm ơn, không biết điều đó trước đây. – smallB
+1 và lý do mà hàm tạo đó không thể là 'constexpr' là nó có tác dụng phụ (cụ thể là phân bổ) không thể thực hiện tại thời gian biên dịch. –
Nhưng bạn không nghĩ rằng đây là (ví dụ cụ thể này) bit ngớ ngẩn? chuỗi chữ là const, vì vậy tôi nghĩ rằng ctor của chuỗi nên được thực hiện constexpr để cho phép các cấu trúc như vậy trong tương lai. – smallB