iDi*_*ong 5 c++ standards iso language-lawyer
当前的C++标准使编译器能够查看函数体以获取完成函数签名的信息:
template <typename T>
inline auto dereference(T const& pointer) {
return *pointer;
}
Run Code Online (Sandbox Code Playgroud)
我想知道如果可以看到定义,编译器是否可以自动声明函数是否保证,可能使用如下语法:
void func() noexcept(auto) {
… // If all operations in the function are noexcept, the
// function can be automatically declared noexcept
}
Run Code Online (Sandbox Code Playgroud)
如果可能,那么在编写noexcept声明时会省去很多麻烦,特别是在编写模板时,函数通常会在第一次出现时定义:
// The noexcept declaration can be even longer than the function body
template <typename T>
void func(T& value) noexcept(
noexcept(value.member_1()) &&
noexcept(value.member_2()) &&
noexcept(value.member_3())
) {
value.member_1();
value.member_2();
value.member_3();
}
// Things will become much easier if the C++ standard support this feature
template <typename T>
void func(T& value) noexcept(auto) {
value.member_1();
value.member_2();
value.member_3();
}
Run Code Online (Sandbox Code Playgroud)
那么,此功能是否可以输入ISO/IEC 14882的未来版本?
| 归档时间: |
|
| 查看次数: |
101 次 |
| 最近记录: |