- C++11 unless otherwise specified
- Boost C++ Libraries naming conventions (snake_case)
- 4-space indentation, no tabs
- Braces on their own line for classes/functions
- Symbols in "detail" namespaces are never public
- public headers in "include/"
- library cpp files in "src/"
Follow Boost C++ Libraries Javadoc style:
- Brief descriptions on first line after
/** - Functions returning values: brief starts with "Return"
- Use
@paramfor function parameters - Use
@tparamfor template parameters, except:- Variadic args (
Args...) — omit - Types deduced from function parameters — omit (self-evident from
@param)
- Variadic args (
- Use
@returnfor return value details - Use
@prefor preconditions - Use
@postfor postconditions - Use
@throwsfor exceptions - Use
@notefor important notes - Use
@seefor cross-references - Use
@code/@endcodefor examples
/** Return the size of the buffer sequence.
@param buffers The buffer sequence to measure.
@return The total byte count.
*/
template<class BufferSequence>
std::size_t
buffer_size(BufferSequence const& buffers);No @tparam needed—BufferSequence is evident from @param buffers.
/** Return the default value.
@tparam T The value type.
*/
template<class T>
T default_value();@tparam needed—T has no corresponding function parameter.
- Concise, dry answers
- Full files, not diffs
- Accurate, compiling C++ code