/* * ValueOperationAbstraction.hpp * * Created on: 11. 7. 2017 * Author: Jan Travnicek */ #ifndef _VALUE_OPERATION_ABSTRACTION_HPP_ #define _VALUE_OPERATION_ABSTRACTION_HPP_ #include <common/ParamQualifiers.hpp> #include <abstraction/ValueOperationAbstractionImpl.hpp> namespace abstraction { template < class ReturnType > class ValueOperationAbstraction : virtual public ValueOperationAbstractionImpl < ReturnType > { bool isConst ( ) const override { return std::is_const_v < std::remove_reference_t < ReturnType > >; } bool isRvalueRef ( ) const override { return std::is_rvalue_reference_v < ReturnType >; } bool isLvalueRef ( ) const override { return std::is_lvalue_reference_v < ReturnType >; } public: ext::set < abstraction::ParamQualifiers::ParamQualifier > getReturnTypeQualifiers ( ) const override { return abstraction::ParamQualifiers::paramQualifiers < ReturnType > ( ); } }; } /* namespace abstraction */ #endif /* _VALUE_OPERATION_ABSTRACTION_HPP_ */