C++ åèæå
- C++11
- C++14
- C++17
- C++20
- C++ ç¼è¯å¨æ¯ææ åµè¡¨
- ç¬ç«ä¸å®¿ä¸»å®ç°
- C++ è¯è¨
- C++ å ³é®è¯
- é¢å¤çå¨
- C++ æ ååºå¤´æä»¶
- å ·åè¦æ±
- åè½ç¹æ§æµè¯ (C++20)
- å·¥å ·åº
- ç±»åæ¯æï¼åºæ¬ç±»åãRTTIãç±»åç¹æ§ï¼
- æ¦å¿µåº (C++20)
- é误å¤ç
- 卿å å管ç
- æ¥æåæ¶é´å·¥å ·
- å符串åº
- 容å¨åº
- è¿ä»£å¨åº
- èå´åº (C++20)
- ç®æ³åº
- æ°å¼åº
- è¾å ¥/è¾åºåº
- æä»¶ç³»ç»åº
- æ¬å°ååº
- æ£å表达å¼åº
- ååæä½åº
- çº¿ç¨æ¯æåº
- å®éªæ§ C++ ç¹æ§
- å¹¶è¡æ©å±
- å¹¶è¡æ©å±ï¼çæ¬ 2
- std::experimental::sample
- std::experimental::to_array
- std::experimental::source_location
- std::experimental::not_fn
- std::experimental::future
- std::experimental::shared_future
- C++ æ ååºæ©å±
- std::experimental::pmr::resource_adaptor
- std::experimental::invocation_type, std::experimental::raw_invocation_type
- C++ æ ååºæ©å±ï¼çæ¬ 2
- std::experimental::propagate_const
- std::experimental::ostream_joiner
- std::experimental::randint
- std::experimental::observer_ptr
- std::experimental::is_detected, std::experimental::detected_t, std::experimental::detected_or
- C++ æ ååºæ©å±ï¼çæ¬ 3
- std::experimental::scope_exit
- std::experimental::scope_fail
- std::experimental::scope_success
- std::experimental::unique_resource
- å¹¶åæ©å±
- å¶çº¦ä¸æ¦å¿µ
- èå´æ©å±
- std::experimental::function
- std::experimental::nonesuch
- std::experimental::reseed
- std::experimental::shuffle
- std::experimental::when_all
- std::experimental::barrier
- std::experimental::latch
- std::experimental::make_array
- æ°å¦ç¹æ®å½æ°
- æä»¶ç³»ç»åº
- std::experimental::erased_type
- std::experimental::when_any
- std::experimental::make_ready_future
- std::experimental::make_exceptional_future
- std::experimental::flex_barrier
- 注é
- æç¨çèµæº
- ç´¢å¼
- std 符å·ç´¢å¼
- åç¨æ¯æ (C++20)
- C++ å ³é®è¯
ä½ç½®ï¼é¦é¡µ > C++ åèæå >å®éªæ§ C++ ç¹æ§ > std::experimental::to_array
std::experimental::to_array
| å®ä¹äºå¤´æä»¶ <experimental/array>
|
||
| template <class T, std::size_t N> constexpr std::array<std::remove_cv_t<T>, N> to_array(T (&a)[N]); |
(åºåºç¡ TS v2) | |
ä»å
建æ°ç» a å建 std::array ã std::array çå
ç´ ä» a ç对åºå
ç´ å¤å¶åå§åã
åæ°
| a | - | ç¨äºåå§å std::array çå 建æ°ç» |
è¿åå¼
ä» a çå
ç´ å¤å¶åå§å对åºå
ç´ ç std::array 对象ã
å¯è½çå®ç°
namespace detail { template <class T, std::size_t N, std::size_t... I> constexpr std::array<std::remove_cv_t<T>, N> to_array_impl(T (&a)[N], std::index_sequence<I...>) { return { {a[I]...} }; } } Â template <class T, std::size_t N> constexpr std::array<std::remove_cv_t<T>, N> to_array(T (&a)[N]) { return detail::to_array_impl(a, std::make_index_sequence<N>{}); } |
示ä¾
è¿è¡æ¤ä»£ç
#include <cstdlib> #include <cassert> #include <experimental/array> #include <unistd.h>  // mkstemp(3) å¯å·¥ä½ template <std::size_t N> int tempfd(char const (&tmpl)[N]) { auto s = std::experimental::to_array(tmpl); int fd = mkstemp(s.data()); if (fd != -1) unlink(s.data());  return fd; }  int main() { int fd = tempfd("/tmp/test.XXXXXX"); int rt = close(fd); assert(rt == 0); }
åé
| å建 std::array 对象ï¼ä»åæ°æ¨å¯¼åºå
¶å¤§å°åå¯éçå
ç´ ç±»å (彿°æ¨¡æ¿) |