| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- //-------------------------------------------------------------------------------------------------------
- // Copyright (C) Microsoft. All rights reserved.
- // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
- //-------------------------------------------------------------------------------------------------------
- #pragma once
- // -----------------------------------------------------------------------------------------------------------------------------
- // Template parameter constraints
- // See http://www.stroustrup.com/bs_faq2.html#constraints
- // -----------------------------------------------------------------------------------------------------------------------------
- namespace TemplateParameter
- {
- template<class T, class Base>
- class SameOrDerivedFrom
- {
- private:
- static void Constrain(T *const t)
- {
- CLANG_WNO_BEGIN("-Wunused-variable")
- #pragma warning(suppress: 4189) // C4189: local variable is initialized but not referenced
- Base *const b = t;
- CLANG_WNO_END
- }
- public:
- SameOrDerivedFrom()
- {
- CLANG_WNO_BEGIN("-Wunused-variable")
- #pragma warning(suppress: 4189) // C4189: local variable is initialized but not referenced
- void (*const p)(T *const t) = Constrain;
- CLANG_WNO_END
- }
- };
- template<class T>
- struct Box
- {
- };
- };
|