// Copyright (C) 2017 Jonathan Müller // This file is subject to the license terms in the LICENSE file // found in the top-level directory of this distribution. #ifndef CPPAST_CPP_VARIABLE_TEMPLATE_HPP_INCLUDED #define CPPAST_CPP_VARIABLE_TEMPLATE_HPP_INCLUDED #include #include namespace cppast { /// A [cppast::cpp_entity]() modelling a C++ alias template. class cpp_variable_template final : public cpp_template { public: static cpp_entity_kind kind() noexcept; /// Builder for [cppast::cpp_variable_template](). class builder : public basic_builder { public: using basic_builder::basic_builder; }; /// \returns A reference to the type variable that is being templated. const cpp_variable& variable() const noexcept { return static_cast(*begin()); } private: cpp_variable_template(std::unique_ptr variable) : cpp_template(std::unique_ptr(variable.release())) { } cpp_entity_kind do_get_entity_kind() const noexcept override; friend basic_builder; }; } // namespace cppast #endif // CPPAST_CPP_VARIABLE_TEMPLATE_HPP_INCLUDED