chỉ là một câu hỏi nhanh. Có sự khác biệt giữaCác khối thử chức năng, nhưng không phải trong các nhà xây dựng
void f(Foo x) try
{
...
}
catch(exception& e)
{
...
}
và
void f(Foo x)
{
try { ... }
catch (exception& e)
{
...
}
}
?
Nếu không, tại sao chức năng thử chặn cho (trường hợp danh sách khởi tạo cho các nhà thầu được đặt sang một bên)? Điều gì sẽ xảy ra nếu người tạo bản sao của Foo
ném ngoại lệ khi x
được chuyển đến f
?
Có nghĩa là chức năng mà cố gắng khối cho các chức năng phi constructor là JUST một sự thay thế cú pháp, không có mục đích ngữ nghĩa, mà thực sự có thể là một lập luận có thể tranh cãi cho sự tồn tại của chúng. Mặt khác, có quá nhiều thứ không thể giải thích trong C++, ngay cả trong số những thứ không liên quan gì đến khả năng tương thích. –