From: Andrey Alekseenko Date: Fri, 16 Oct 2020 14:16:04 +0000 (+0200) Subject: Fix random doxygen warnings and typos X-Git-Url: http://biod.pnpi.spb.ru/gitweb/?a=commitdiff_plain;h=c3734e4391a08c06986ff14de5e218a712434971;p=alexxy%2Fgromacs.git Fix random doxygen warnings and typos Silence annoying "/builds/gromacs/gromacs/src/gromacs/math/vectypes.h:87: error: gmx::BasicVector: is in library file(s), but appears in public documentation" from source-check pipeline (appears to be false-positive due to a forward-declaration in a random file). I was not able to come up with a quick fix for the underlying problem in check-source, and, from my understanding, there are plans for refactoring it soon anyway; so I went with a suppression here. Fix a bunch of random typos throughout the code. Fix some unbalanced Doxygen's \{ and \}. And one widowed @}. Fix some \copydocs (not all). Remove a nasty non-breakable-space that was messing up block indentation in Sphinx docs. --- diff --git a/docs/doxygen/suppressions.txt b/docs/doxygen/suppressions.txt index 6a976c4971..a6538a629f 100644 --- a/docs/doxygen/suppressions.txt +++ b/docs/doxygen/suppressions.txt @@ -37,6 +37,9 @@ src/gromacs/nbnxm/kernels_simd_4xm/kernel_common.h: warning: should include "nbn # This seems to be a false positive src/gromacs/nbnxm/cuda/nbnxm_cuda_types.h: error: NbnxmGpu: is in internal file(s), but appears in public documentation +# False positive caused by forward-declaration of BasicVector in src/testutils/refdata.h +src/gromacs/math/vectypes.h: error: gmx::BasicVector: is in library file(s), but appears in public documentation + # Temporary while we change the SIMD implementation src/gromacs/simd/impl_sparc64_hpc_ace/impl_sparc64_hpc_ace_common.h: warning: should include "simd.h" diff --git a/docs/reference-manual/algorithms/free-energy-calculations.rst b/docs/reference-manual/algorithms/free-energy-calculations.rst index 383fbef097..77cd81d7c6 100644 --- a/docs/reference-manual/algorithms/free-energy-calculations.rst +++ b/docs/reference-manual/algorithms/free-energy-calculations.rst @@ -36,7 +36,7 @@ the right-hand term. .. figure:: plots/free2.* :width: 6.00000cm -  Free energy cycles. **B:** to calculate + Free energy cycles. **B:** to calculate :math:`\Delta G_{12}`, the free energy difference for binding of inhibitors **I** respectively **I**\ :math:`^{\prime}` to enzyme **E**. diff --git a/src/gromacs/analysisdata/modules/average.h b/src/gromacs/analysisdata/modules/average.h index 52527ccb7d..01e62d61e1 100644 --- a/src/gromacs/analysisdata/modules/average.h +++ b/src/gromacs/analysisdata/modules/average.h @@ -65,7 +65,7 @@ namespace gmx * * Output data contains a column for each data set in the input data, and a * frame for each column in the input data. If different data sets have - * different number of columns, the frame count accomodates the largest data + * different number of columns, the frame count accommodates the largest data * set. Other columns are padded with zero values that are additionally marked * as missing. * Each value in the output data is the average of the corresponding diff --git a/src/gromacs/applied_forces/densityfitting/densityfittingforceprovider.cpp b/src/gromacs/applied_forces/densityfitting/densityfittingforceprovider.cpp index c0dab95436..c2442bbd38 100644 --- a/src/gromacs/applied_forces/densityfitting/densityfittingforceprovider.cpp +++ b/src/gromacs/applied_forces/densityfitting/densityfittingforceprovider.cpp @@ -146,7 +146,7 @@ void DensityFittingForceProviderState::broadcastState(MPI_Comm communicator, boo class DensityFittingForceProvider::Impl { public: - //! \copydoc DensityFittingForceProvider(const DensityFittingParameters ¶meters) + //! \copydoc DensityFittingForceProvider::DensityFittingForceProvider Impl(const DensityFittingParameters& parameters, basic_mdspan referenceDensity, const TranslateAndScale& transformationToDensityLattice, diff --git a/src/gromacs/ewald/pme_gather.cu b/src/gromacs/ewald/pme_gather.cu index 52814c4ce4..160f544d3e 100644 --- a/src/gromacs/ewald/pme_gather.cu +++ b/src/gromacs/ewald/pme_gather.cu @@ -438,7 +438,7 @@ __launch_bounds__(c_gatherMaxThreadsPerBlock, c_gatherMinBlocksPerMP) __global__ else { const float3* __restrict__ gm_coordinates = asFloat3(kernelParams.atoms.d_coordinates); - /* Recaclulate Splines */ + /* Recalculate Splines */ if (c_useAtomDataPrefetch) { // charges diff --git a/src/gromacs/ewald/pme_gpu_internal.cpp b/src/gromacs/ewald/pme_gpu_internal.cpp index 9575aaf2ff..c67e471ca3 100644 --- a/src/gromacs/ewald/pme_gpu_internal.cpp +++ b/src/gromacs/ewald/pme_gpu_internal.cpp @@ -94,7 +94,7 @@ /*! \brief * CUDA only * Atom limit above which it is advantageous to turn on the - * recalcuating of the splines in the gather and using less threads per atom in the spline and spread + * recalculating of the splines in the gather and using less threads per atom in the spline and spread */ constexpr int c_pmeGpuPerformanceAtomLimit = 23000; diff --git a/src/gromacs/fileio/warninp.h b/src/gromacs/fileio/warninp.h index 0b7d03054a..7d21c03d52 100644 --- a/src/gromacs/fileio/warninp.h +++ b/src/gromacs/fileio/warninp.h @@ -105,7 +105,7 @@ void warning_error(warninp_t wi, const std::string& s); * This is intended for use where there is no way to produce a data * structure that would prevent execution from segfaulting. */ [[noreturn]] void warning_error_and_exit(warninp_t wi, const char* s, int f_errno, const char* file, int line); -//! \copydoc warning_error_and_exit(warninp_t, const char *, int, const char *, int); +//! \copydoc warning_error_and_exit(warninp_t,const char *,int,const char *,int) [[noreturn]] void warning_error_and_exit(warninp_t wi, const std::string& s, int f_errno, const char* file, int line); diff --git a/src/gromacs/gpu_utils/devicebuffer.cuh b/src/gromacs/gpu_utils/devicebuffer.cuh index 565c2c1bc8..584edc7775 100644 --- a/src/gromacs/gpu_utils/devicebuffer.cuh +++ b/src/gromacs/gpu_utils/devicebuffer.cuh @@ -60,7 +60,7 @@ * * \tparam ValueType Raw value type of the \p buffer. * \param[in,out] buffer Pointer to the device-side buffer. - * \param[in] numValues Number of values to accomodate. + * \param[in] numValues Number of values to accommodate. * \param[in] deviceContext The buffer's dummy device context - not managed explicitly in CUDA RT. */ template diff --git a/src/gromacs/gpu_utils/devicebuffer_ocl.h b/src/gromacs/gpu_utils/devicebuffer_ocl.h index 227370968f..b8e047a87d 100644 --- a/src/gromacs/gpu_utils/devicebuffer_ocl.h +++ b/src/gromacs/gpu_utils/devicebuffer_ocl.h @@ -60,7 +60,7 @@ * * \tparam ValueType Raw value type of the \p buffer. * \param[in,out] buffer Pointer to the device-side buffer. - * \param[in] numValues Number of values to accomodate. + * \param[in] numValues Number of values to accommodate. * \param[in] deviceContext The buffer's device context-to-be. */ template diff --git a/src/gromacs/listed_forces/bonded.cpp b/src/gromacs/listed_forces/bonded.cpp index b01c0a18b2..4daf423874 100644 --- a/src/gromacs/listed_forces/bonded.cpp +++ b/src/gromacs/listed_forces/bonded.cpp @@ -2041,7 +2041,7 @@ pdihs(int nbonds, } } - /* Caclulate GMX_SIMD_REAL_WIDTH dihedral angles at once */ + /* Calculate GMX_SIMD_REAL_WIDTH dihedral angles at once */ dih_angle_simd(x, ai, aj, ak, al, pbc_simd, &phi_S, &mx_S, &my_S, &mz_S, &nx_S, &ny_S, &nz_S, &nrkj_m2_S, &nrkj_n2_S, &p_S, &q_S); @@ -2157,7 +2157,7 @@ rbdihs(int nbonds, } } - /* Caclulate GMX_SIMD_REAL_WIDTH dihedral angles at once */ + /* Calculate GMX_SIMD_REAL_WIDTH dihedral angles at once */ dih_angle_simd(x, ai, aj, ak, al, pbc_simd, &phi_S, &mx_S, &my_S, &mz_S, &nx_S, &ny_S, &nz_S, &nrkj_m2_S, &nrkj_n2_S, &p_S, &q_S); diff --git a/src/gromacs/math/densityfittingforce.cpp b/src/gromacs/math/densityfittingforce.cpp index 0ba9878dbe..b3c8694639 100644 --- a/src/gromacs/math/densityfittingforce.cpp +++ b/src/gromacs/math/densityfittingforce.cpp @@ -64,7 +64,7 @@ public: * \param[in] kernelShapeParameters determine the shape of the spreading kernel */ explicit Impl(const GaussianSpreadKernelParameters::Shape& kernelShapeParameters); - //! \copydoc DensityFittingForce::evaluateForce(const DensitySpreadKernelParameters::PositionAndAmplitude & localParameters, basic_mdspan densityDerivative) + //! \copydoc DensityFittingForce::evaluateForce RVec evaluateForce(const GaussianSpreadKernelParameters::PositionAndAmplitude& localParameters, basic_mdspan densityDerivative); //! The width of the Gaussian in lattice spacing units diff --git a/src/gromacs/math/paddedvector.h b/src/gromacs/math/paddedvector.h index 6c199bc03e..47aa53240f 100644 --- a/src/gromacs/math/paddedvector.h +++ b/src/gromacs/math/paddedvector.h @@ -228,7 +228,7 @@ public: //! \} PaddedVector() : storage_(), unpaddedEnd_(begin()) {} - /*! \brief Constructor that specifes the initial size. */ + /*! \brief Constructor that specifies the initial size. */ explicit PaddedVector(size_type count, const allocator_type& allocator = Allocator()) : storage_(count, allocator), unpaddedEnd_(begin() + count) @@ -237,7 +237,7 @@ public: // the padding elements are added resizeWithPadding(count); } - /*! \brief Constructor that specifes the initial size and an element to copy. */ + /*! \brief Constructor that specifies the initial size and an element to copy. */ explicit PaddedVector(size_type count, value_type const& v, const allocator_type& allocator = Allocator()) : storage_(count, v, allocator), unpaddedEnd_(begin() + count) diff --git a/src/gromacs/math/vec.h b/src/gromacs/math/vec.h index 7666ec6d33..ec8b3e1eb9 100644 --- a/src/gromacs/math/vec.h +++ b/src/gromacs/math/vec.h @@ -636,9 +636,9 @@ std::remove_const_t norm2(T* v) { return ::norm2(v); } +/*! \} */ } // namespace gmx -/*! \} */ #endif diff --git a/src/gromacs/mdlib/leapfrog_gpu.cu b/src/gromacs/mdlib/leapfrog_gpu.cu index b4c08e0e35..1b5ec5f42b 100644 --- a/src/gromacs/mdlib/leapfrog_gpu.cu +++ b/src/gromacs/mdlib/leapfrog_gpu.cu @@ -69,7 +69,7 @@ namespace gmx /*!\brief Number of CUDA threads in a block * - * \todo Check if using smaller block size will lead to better prformance. + * \todo Check if using smaller block size will lead to better performance. */ constexpr static int c_threadsPerBlock = 256; //! Maximum number of threads in a block (for __launch_bounds__) diff --git a/src/gromacs/mdlib/update_constrain_gpu_impl.cu b/src/gromacs/mdlib/update_constrain_gpu_impl.cu index 8d7a4bba15..b9dd8632db 100644 --- a/src/gromacs/mdlib/update_constrain_gpu_impl.cu +++ b/src/gromacs/mdlib/update_constrain_gpu_impl.cu @@ -72,7 +72,7 @@ namespace gmx { /*!\brief Number of CUDA threads in a block * - * \todo Check if using smaller block size will lead to better prformance. + * \todo Check if using smaller block size will lead to better performance. */ constexpr static int c_threadsPerBlock = 256; //! Maximum number of threads in a block (for __launch_bounds__) @@ -163,7 +163,7 @@ void UpdateConstrainGpu::Impl::scaleCoordinates(const matrix scalingMatrix) launchGpuKernel(scaleCoordinates_kernel, coordinateScalingKernelLaunchConfig_, deviceStream_, nullptr, "scaleCoordinates_kernel", kernelArgs); // TODO: Although this only happens on the pressure coupling steps, this synchronization - // can affect the perfornamce if nstpcouple is small. + // can affect the performance if nstpcouple is small. deviceStream_.synchronize(); } @@ -182,7 +182,7 @@ void UpdateConstrainGpu::Impl::scaleVelocities(const matrix scalingMatrix) launchGpuKernel(scaleCoordinates_kernel, coordinateScalingKernelLaunchConfig_, deviceStream_, nullptr, "scaleCoordinates_kernel", kernelArgs); // TODO: Although this only happens on the pressure coupling steps, this synchronization - // can affect the perfornamce if nstpcouple is small. + // can affect the performance if nstpcouple is small. deviceStream_.synchronize(); } diff --git a/src/gromacs/nbnxm/nbnxm_geometry.h b/src/gromacs/nbnxm/nbnxm_geometry.h index 3362a410db..0df65f2bc5 100644 --- a/src/gromacs/nbnxm/nbnxm_geometry.h +++ b/src/gromacs/nbnxm/nbnxm_geometry.h @@ -52,7 +52,7 @@ #include "pairlist.h" -/*! \copybrief Returns the base-2 log of n. +/*! \brief Returns the base-2 log of n. * * * Generates a fatal error when n is not an integer power of 2. */ diff --git a/src/gromacs/nbnxm/nbnxm_gpu.h b/src/gromacs/nbnxm/nbnxm_gpu.h index 600bd20a62..b18d16a7a4 100644 --- a/src/gromacs/nbnxm/nbnxm_gpu.h +++ b/src/gromacs/nbnxm/nbnxm_gpu.h @@ -288,7 +288,8 @@ void nbnxn_gpu_init_x_to_nbat_x(const Nbnxm::GridSet gmx_unused& gridSet, * \param[in,out] gpu_nbv The nonbonded data GPU structure. * \param[in] d_x Device-side coordinates in plain rvec format. * \param[in] xReadyOnDevice Event synchronizer indicating that the coordinates are ready in - * the device memory. \param[in] locality Copy coordinates for local or non-local atoms. + * the device memory. + * \param[in] locality Copy coordinates for local or non-local atoms. * \param[in] gridId Index of the grid being converted. * \param[in] numColumnsMax Maximum number of columns in the grid. */ diff --git a/src/gromacs/nbnxm/nbnxm_gpu_data_mgmt.cpp b/src/gromacs/nbnxm/nbnxm_gpu_data_mgmt.cpp index 47cfa5b81f..6e0d94ca2b 100644 --- a/src/gromacs/nbnxm/nbnxm_gpu_data_mgmt.cpp +++ b/src/gromacs/nbnxm/nbnxm_gpu_data_mgmt.cpp @@ -82,7 +82,7 @@ void init_ewald_coulomb_force_table(const EwaldCorrectionTables& tables, tables.tableF.size(), deviceContext); } -void inline printEnviromnentVariableDeprecationMessage(bool isEnvironmentVariableSet, +void inline printEnvironmentVariableDeprecationMessage(bool isEnvironmentVariableSet, const std::string& environmentVariableSuffix) { if (isEnvironmentVariableSet) @@ -111,9 +111,9 @@ int nbnxn_gpu_pick_ewald_kernel_type(const interaction_const_t& ic) const bool forceTwinCutoffEwaldLegacy = (getenv("GMX_CUDA_NB_EWALD_TWINCUT") != nullptr) || (getenv("GMX_OCL_NB_EWALD_TWINCUT") != nullptr); - printEnviromnentVariableDeprecationMessage(forceAnalyticalEwaldLegacy, "NB_ANA_EWALD"); - printEnviromnentVariableDeprecationMessage(forceTabulatedEwaldLegacy, "NB_TAB_EWALD"); - printEnviromnentVariableDeprecationMessage(forceTwinCutoffEwaldLegacy, "NB_EWALD_TWINCUT"); + printEnvironmentVariableDeprecationMessage(forceAnalyticalEwaldLegacy, "NB_ANA_EWALD"); + printEnvironmentVariableDeprecationMessage(forceTabulatedEwaldLegacy, "NB_TAB_EWALD"); + printEnvironmentVariableDeprecationMessage(forceTwinCutoffEwaldLegacy, "NB_EWALD_TWINCUT"); const bool forceAnalyticalEwald = (getenv("GMX_GPU_NB_ANA_EWALD") != nullptr) || forceAnalyticalEwaldLegacy; diff --git a/src/gromacs/nbnxm/opencl/nbnxm_ocl_types.h b/src/gromacs/nbnxm/opencl/nbnxm_ocl_types.h index 886298a20e..a517c2fd04 100644 --- a/src/gromacs/nbnxm/opencl/nbnxm_ocl_types.h +++ b/src/gromacs/nbnxm/opencl/nbnxm_ocl_types.h @@ -69,7 +69,6 @@ struct gmx_wallclock_gpu_nbnxn_t; //! Define 1/sqrt(pi) #define M_FLOAT_1_SQRTPI 0.564189583547756f -/*! @} */ /*! \brief Constants for platform-dependent defaults for the prune kernel's j4 processing concurrency. * * Initialized using macros that can be overridden at compile-time (using #GMX_NBNXN_PRUNE_KERNEL_J4_CONCURRENCY). diff --git a/src/gromacs/restraint/restraintmdmodule.h b/src/gromacs/restraint/restraintmdmodule.h index 2a0c75784a..9825a1b803 100644 --- a/src/gromacs/restraint/restraintmdmodule.h +++ b/src/gromacs/restraint/restraintmdmodule.h @@ -76,16 +76,14 @@ public: /*! * \brief Wrap a restraint potential as an MDModule * - * \param restraint shared ownership of an object for calculating restraint forces. - * \return new wrapper object sharing ownership of restraint. - * * Consumers of the interfaces provided by an IMDModule do not extend the lifetime * of the interface objects returned by mdpOptionProvider(), outputProvider(), or * registered via initForceProviders(). Calling code must keep this object alive * as long as those interfaces are needed (probably the duration of an MD run). * - * \param restraint handle to object to wrap + * \param restraint shared ownership of an object for calculating restraint forces * \param sites list of sites for the framework to pass to the restraint + * \return new wrapper object sharing ownership of restraint */ static std::unique_ptr create(std::shared_ptr restraint, const std::vector& sites); diff --git a/src/gromacs/simd/impl_reference/impl_reference_simd_double.h b/src/gromacs/simd/impl_reference/impl_reference_simd_double.h index 60fa0634b3..d8a698e393 100644 --- a/src/gromacs/simd/impl_reference/impl_reference_simd_double.h +++ b/src/gromacs/simd/impl_reference/impl_reference_simd_double.h @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2014,2015,2016,2017,2019, by the GROMACS development team, led by + * Copyright (c) 2014,2015,2016,2017,2019,2020, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -68,7 +68,7 @@ namespace gmx /*! \addtogroup module_simd */ /*! \{ */ -/* \name SIMD implementation data types +/*! \name SIMD implementation data types * \{ */ diff --git a/src/gromacs/simd/impl_reference/impl_reference_simd_float.h b/src/gromacs/simd/impl_reference/impl_reference_simd_float.h index 6b0a943abb..b0ed1105bc 100644 --- a/src/gromacs/simd/impl_reference/impl_reference_simd_float.h +++ b/src/gromacs/simd/impl_reference/impl_reference_simd_float.h @@ -1,7 +1,7 @@ /* * This file is part of the GROMACS molecular simulation package. * - * Copyright (c) 2014,2015,2016,2017,2019, by the GROMACS development team, led by + * Copyright (c) 2014,2015,2016,2017,2019,2020, by the GROMACS development team, led by * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl, * and including many others, as listed in the AUTHORS file in the * top-level source directory and at http://www.gromacs.org. @@ -66,7 +66,7 @@ namespace gmx /*! \addtogroup module_simd */ /*! \{ */ -/* \name SIMD implementation data types and built-in conversions between types +/*! \name SIMD implementation data types and built-in conversions between types * \{ */ diff --git a/src/gromacs/simd/impl_reference/impl_reference_util_double.h b/src/gromacs/simd/impl_reference/impl_reference_util_double.h index 4c2df75fc8..7c051f7e1c 100644 --- a/src/gromacs/simd/impl_reference/impl_reference_util_double.h +++ b/src/gromacs/simd/impl_reference/impl_reference_util_double.h @@ -68,7 +68,7 @@ namespace gmx /*! \addtogroup module_simd */ /*! \{ */ -/* \name Higher-level SIMD utility functions, double precision. +/*! \name Higher-level SIMD utility functions, double precision. * * These include generic functions to work with triplets of data, typically * coordinates, and a few utility functions to load and update data in the diff --git a/src/gromacs/simd/impl_reference/impl_reference_util_float.h b/src/gromacs/simd/impl_reference/impl_reference_util_float.h index 99919f3223..5e2ac95fd5 100644 --- a/src/gromacs/simd/impl_reference/impl_reference_util_float.h +++ b/src/gromacs/simd/impl_reference/impl_reference_util_float.h @@ -68,7 +68,7 @@ namespace gmx /*! \addtogroup module_simd */ /*! \{ */ -/* \name Higher-level SIMD utility functions, single precision. +/*! \name Higher-level SIMD utility functions, single precision. * * These include generic functions to work with triplets of data, typically * coordinates, and a few utility functions to load and update data in the diff --git a/src/gromacs/simd/simd.h b/src/gromacs/simd/simd.h index 536d14675c..55fd89f55f 100644 --- a/src/gromacs/simd/simd.h +++ b/src/gromacs/simd/simd.h @@ -602,7 +602,7 @@ static inline SimdSetZeroProxy gmx_simdcall setZero() namespace internal { -// TODO: Don't foward function but properly rename them and use proper traits +// TODO: Don't forward function but properly rename them and use proper traits template struct Simd4Traits { @@ -756,7 +756,7 @@ using Simd4NReal = Simd4NFloat; } // namespace gmx -// \} end of module_simd +//! \} end of module_simd //! \endcond end of condition libapi diff --git a/src/gromacs/simd/simd_math.h b/src/gromacs/simd/simd_math.h index d5dfec2ac1..1c435b8abb 100644 --- a/src/gromacs/simd/simd_math.h +++ b/src/gromacs/simd/simd_math.h @@ -5050,7 +5050,7 @@ static inline SimdFloat gmx_simdcall expSingleAccuracy(SimdFloat x) /*! \brief SIMD pow(x,y), only targeting single accuracy. * - * \copydetails pow(SimdFloat) + * \copydetails pow(SimdFloat,SimdFloat) */ template static inline SimdFloat gmx_simdcall powSingleAccuracy(SimdFloat x, SimdFloat y) diff --git a/src/gromacs/simd/tests/simd_math.cpp b/src/gromacs/simd/tests/simd_math.cpp index 20d7b916db..07b25cde5f 100644 --- a/src/gromacs/simd/tests/simd_math.cpp +++ b/src/gromacs/simd/tests/simd_math.cpp @@ -448,14 +448,13 @@ void SimdMathTest::generateTestPointsTest() // Actual math function tests below - -namespace -{ - /*! \cond internal */ /*! \addtogroup module_simd */ /*! \{ */ +namespace +{ + // Reference data is selected based on test name, so make the test name precision-dependent # if GMX_DOUBLE TEST_F(SimdMathTest, generateTestPointsDouble) diff --git a/src/gromacs/utility/arrayref.h b/src/gromacs/utility/arrayref.h index 5eacdcb672..138bffc8f3 100644 --- a/src/gromacs/utility/arrayref.h +++ b/src/gromacs/utility/arrayref.h @@ -293,7 +293,14 @@ private: iterator end_; }; -//! \copydoc ArrayRef::fromArray() +/*! \brief + * Constructs a reference to a C array. + * + * \param[in] begin Pointer to the beginning of array. + * \param[in] size Number of elements in array. + * + * Passed array must remain valid for the lifetime of this object. + */ //! \related ArrayRef template ArrayRef arrayRefFromArray(T* begin, size_t size) @@ -301,7 +308,7 @@ ArrayRef arrayRefFromArray(T* begin, size_t size) return ArrayRef(begin, begin + size); } -//! \copydoc ArrayRef::fromArray() +//! \copydoc arrayRefFromArray //! \related ArrayRef template ArrayRef constArrayRefFromArray(const T* begin, size_t size)