std::piecewise_construct_t
| ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ <utility>
|
||
struct piecewise_construct_t { explicit piecewise_construct_t() = default; }; |
(Π½Π°ΡΠΈΠ½Π°Ρ Ρ C++11) | |
constexpr std::piecewise_construct_t piecewise_construct{}; |
(Π½Π°ΡΠΈΠ½Π°Ρ Ρ C++11) (Π΄ΠΎ C++17) |
|
inline constexpr std::piecewise_construct_t piecewise_construct{}; |
(Π½Π°ΡΠΈΠ½Π°Ρ Ρ C++17) | |
std::piecewise_construct_t ΡΡΠΎ ΠΏΡΡΡΠΎΠΉ ΡΠΈΠΏ ΠΊΠ»Π°ΡΡΠ° ΡΠ΅Π³Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π΄Π»Ρ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΡ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎΡΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ, ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠΈΠΌΠΈ Π΄Π²Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΊΠΎΡΡΠ΅ΠΆΠ°. ΠΠΎΠ½ΡΡΠ°Π½ΡΠ° std::piecewise_construct ΡΠ²Π»ΡΠ΅ΡΡΡ Π΅Π³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠΌ.
ΠΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅ std::piecewise_construct_t, ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡΡ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΊΠΎΡΡΠ΅ΠΆΠ° ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ ΠΏΠ°ΡΡ. ΠΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅ std::piecewise_construct_t, ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡΡ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΊΠΎΡΡΠ΅ΠΆΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΊΡΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠ°Π½Π΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ ΠΏΠ°ΡΡ.
ΠΡΠΈΠΌΠ΅Ρ
#include <iostream>
#include <utility>
#include <tuple>
struct Foo {
Foo(std::tuple<int, float>)
{
std::cout << "Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Foo ΠΈΠ· tuple\n";
}
Foo(int, float)
{
std::cout << "Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Foo ΠΈΠ· int ΠΈ float\n";
}
};
int main()
{
std::tuple<int, float> t(1, 3.14);
std::pair<Foo, Foo> p1(t, t);
std::pair<Foo, Foo> p2(std::piecewise_construct, t, t);
}
ΠΡΠ²ΠΎΠ΄:
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Foo ΠΈΠ· tuple
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Foo ΠΈΠ· tuple
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Foo ΠΈΠ· int ΠΈ float
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Foo ΠΈΠ· int ΠΈ float
ΠΡΡΡΡΡ ΠΎ Π΄Π΅ΡΠ΅ΠΊΡΠ°Ρ
Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ Π±ΡΠ»ΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Ρ Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠΈΠ»ΠΎΠΉ ΠΊ ΡΠ°Π½Π΅Π΅ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΡΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ°ΠΌ C++:
| ΠΠΎΠΌΠ΅Ρ | ΠΡΠΈΠΌΠ΅Π½ΡΠ½ | ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ΅ | ΠΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ |
|---|---|---|---|
| LWG 2510 | C++11 | ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π±ΡΠ» Π½Π΅ΡΠ²Π½ΡΠΌ, ΡΡΠΎ ΠΌΠΎΠ³Π»ΠΎ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π΄Π²ΡΡΠΌΡΡΠ»Π΅Π½Π½ΠΎΡΡΠΈ | ΡΠ΄Π΅Π»Π°Π½ ΡΠ²Π½ΡΠΌ |
Π‘ΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ°ΠΊΠΆΠ΅
| ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ pair (public ΡΡΠ½ΠΊΡΠΈΡ-ΡΠ»Π΅ΠΌΠ΅Π½Ρ std::pair)
|