/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file Copyright.txt 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; }; template struct MaybeEmpty; template struct MaybeEmpty> : public std::vector { using std::vector::vector; }; template struct NonEmpty; template struct NonEmpty> : public std::vector { using std::vector::vector; }; template <> struct NonEmpty : public std::string { using std::string::basic_string; }; } // namespace ArgumentParser #else namespace ArgumentParser { template struct Maybe : public T { using T::T; }; template struct MaybeEmpty : public T { using T::T; }; template struct NonEmpty : public T { using T::T; }; } // namespace ArgumentParser #endif