c ++ optional_t ​​típusú tag (n3527)

szavazat
1

n3527 azt javasolja, hogy std::optional<T>a C ++. Ennek része, ez határozza nullopt_tcímkéje.

GCC (4.9) libstdc ++ definiálja optional_ta következőképpen:

struct nullopt_t
{
    enum class _Construct { _Token };
    explicit constexpr nullopt_t(_Construct) { }
};
constexpr nullopt_t nullopt { nullopt_t::_Construct::_Token };

csengés a (3.6) libc ++ határozza meg, mint:

struct nullopt_t
{
    explicit constexpr nullopt_t(int) noexcept {}
};
constexpr nullopt_t nullopt{0};

Kérdésem: miért történik ez így, amely (illik) túl bonyolult?

Más szóval, miért nem lehet azt a következőképpen definiálható:

struct nullopt_t { };
constexpr nullopt_t nullopt { };

Így például std::defer_lock_tmíg mások a szabványban meghatározott könyvtárban.

A kérdést 04/04/2016 01:29
a forrás felhasználó
Más nyelveken...                            


1 válasz

szavazat
1

Üzenetrögzítő magam itt, de a hitel megy kakkoko hozataláért nekem a helyes úton.

A kapcsolódó kérdés linkek egy újabb felülvizsgálat n3793 , amely részletesen ismerteti a különleges összetettségét nullopt_taz a op = {} szintaxis bekezdés.

Dióhéjban, a nullopt_tnyilvánítják, hogy így, hogy ez nem DefaultConstructibleannak érdekében, hogy félreértések elkerülése végett, a op = {}szintaxis. Elolvashatja az aforelinked bekezdés a további részleteket.

Válaszolt 04/04/2016 14:07
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more