Q:

Can main() and its parameters have attributes?

In standard C++, can the main function and its parameters have attributes?
For example, is this following legal?
[[noreturn]] int main() { std::abort(); }

or something like
[[nodiscard, carries_dependency]]
int main(int argc [[maybe_unused]],
         char * argv [[carries_dependency, maybe_unused]] [])
{ /* ... function body omitted ... */ }

A:

Yes, it is legal. There is no wording in the C++ standard (in [basic.start.main], [dcl.attr], or elsewhere) to prevent any of this. One can even mark main() as [[deprecated]] if wanted.

