Is there a reason forward declaration of concepts are not allowed?

I wanted such feature in the following snippet:

```c++
template<typename T>
concept tag_type;
//Use the concept in a template declaration, when instantiated, the concept definition will be avilable
template<template<tag_type> typename ArgsType, template<ArgsType...> typename Templ>
struct template_ {};
template<typename T>
struct is_tag_impl : std::false_type {};
template<template<tag_type> typename ArgsType, template<ArgsType...> typename Templ>
struct is_tag_impl<template_<ArgsTypeTempl>> : std::true_type {};

template<typename T>
concept tag_type = is_tag_impl<T>::value;



```