| #include <cstdio> |
| #include <iterator> |
| #include <memory> |
| #include <optional> |
| #include <unordered_map> |
| |
| #ifdef _MSC_VER |
| # include <comdef.h> |
| #endif |
| |
| int main() |
| { |
| int a[] = { 0, 1, 2 }; |
| auto ai = std::cbegin(a); |
| |
| int b[] = { 2, 1, 0 }; |
| auto bi = std::cend(b); |
| |
| auto ci = std::size(a); |
| |
| std::unique_ptr<int> u(new int(0)); |
| |
| #ifdef _MSC_VER |
| // clang-cl has problems instantiating this constructor in C++17 mode |
| // error: indirection requires pointer operand ('const _GUID' invalid) |
| // return *_IID; |
| IUnknownPtr ptr{}; |
| IDispatchPtr disp(ptr); |
| #endif |
| |
| std::optional<int> oi = 0; |
| |
| return *u + *ai + *(bi - 1) + (3 - static_cast<int>(ci)) + oi.value(); |
| } |