С++ 11 [atomics.types.generic] p7:
Должны быть названы типы, соответствующие интегральным специализациям
atomic, как указано в таблице 145, и именованный типatomic_bool, соответствующий указанномуatomic<bool>. Каждый именованный тип является либо typedef соответствующей специализации , либо базовым классом соответствующей специализации. Если это базовый класс, он должен поддерживать те же функции-члены, что и соответствующая специализация.
(выделено курсивом)
Какое обоснование допускать std::atomic_char не идентично std::atomic<char> и т.д. для всех других типов? Какую гибкость это дает, и почему это полезно? На первый взгляд, я не понимаю, почему это не требуется, чтобы быть typedefs для std::atomic<T> специализаций напрямую.
Обратите внимание, что N2427, который предложил <atomic>, говорит, что typedefs относятся к специализациям точно, а не к базовым классам.