SA
Size: a a a
SA
AB
K
SA
/* PtrTy.hpp */Как можно видеть, первым двум примерам достаточно forward declaration'а, что полностью соответствует концепции легковесных заголовков (второму при этом нужен еще и сам шаблон элиаса). А вот третий потребует подтянуть именно определение
template < typename Ty >
using Ptr = Ty*;
/* StructA.hpp */
struct StructA
{ typedef StructA* Ptr; };
/* Smthng.hpp */
#include <PtrTy.hpp>
/* fwd declaration */
struct StructA;
/* ok */
auto subA ( StructA* )
-> /* ... */;
/* ok */
auto subB ( Ptr<StructA> )
-> /* ... */;
/* ill-formed, definition of 'StructA' required */
auto subC ( StructA::Ptr )
-> /* ... */;
StructA
, поскольку Ptr
- nested identifier в нем.CA
((double) 1) / ((double) 2)
для деления двух целых с получением в итоге double? CA
M
CA
DP
VD
auto a = nondouble / (double)nondouble2;
VD
АК
КП
КП
D
КП
D
КП
D
КП