/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file LICENSE.rst or https://cmake.org/licensing for details. */ #pragma once #include "cmConfigure.h" // IWYU pragma: keep #if defined(__SUNPRO_CC) || defined(__EDG__) # include # include namespace ArgumentParser { template struct Maybe; template <> struct Maybe : public std::string { using std::string::basic_string; using std::string::operator=; }; template struct MaybeEmpty; # if defined(__LCC__) && (__EDG_VERSION__ >= 603) template <> struct MaybeEmpty> : public std::vector { using std::vector::vector; using std::vector::operator=; }; # endif template struct MaybeEmpty> : public std::vector { using std::vector::vector; using std::vector::operator=; }; template struct NonEmpty; template struct NonEmpty> : public std::vector { using std::vector::vector; using std::vector::operator=; }; template <> struct NonEmpty : public std::string { using std::string::basic_string; using std::string::operator=; }; } // namespace ArgumentParser #else namespace ArgumentParser { template struct Maybe : public T { using T::T; using T::operator=; }; template struct MaybeEmpty : public T { using T::T; using T::operator=; }; template struct NonEmpty : public T { using T::T; using T::operator=; }; } // namespace ArgumentParser #endif