You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Can I add for you, the conceptual support for the C++ programming language 2020 standard?
Because your TDDO: code comments look like they need help.
Just like the your code below:
#ifndef MIO_BASIC_MMAP_IMPL
#defineMIO_BASIC_MMAP_IMPL// #include "mio/mmap.hpp"// #include "mio/page.hpp"// #include "mio/detail/string_util.hpp"/* Copyright 2017 https://github.com/mandreyel * * Permission is hereby granted, free of charge, to any person obtaining a copy of this * software and associated documentation files (the "Software"), to deal in the Software * without restriction, including without limitation the rights to use, copy, modify, * merge, publish, distribute, sublicense, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so, subject to the following * conditions: * * The above copyright notice and this permission notice shall be included in all copies * or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.*/
#ifndef MIO_STRING_UTIL_HEADER
#defineMIO_STRING_UTIL_HEADER
#include<type_traits>namespacemio {
namespacedetail {
template<
typename S,
typename C = typename std::decay<S>::type,
typename = decltype(std::declval<C>().data()),
typename = typename std::enable_if<
std::is_same<typename C::value_type, char>::value
#ifdef _WIN32
|| std::is_same<typename C::value_type, wchar_t>::value
#endif
>::type
> structchar_type_helper {
using type = typename C::value_type;
};
template<classT>
structchar_type {
using type = typename char_type_helper<T>::type;
};
// TODO: can we avoid this brute force approach?template<>
structchar_type<char*> {
using type = char;
};
template<>
structchar_type<constchar*> {
using type = char;
};
template<size_t N>
structchar_type<char[N]> {
using type = char;
};
template<size_t N>
structchar_type<constchar[N]> {
using type = char;
};
#ifdef _WIN32
template<>
structchar_type<wchar_t*> {
using type = wchar_t;
};
template<>
structchar_type<constwchar_t*> {
using type = wchar_t;
};
template<size_t N>
structchar_type<wchar_t[N]> {
using type = wchar_t;
};
template<size_t N>
structchar_type<constwchar_t[N]> {
using type = wchar_t;
};
#endif// _WIN32template<typename CharT, typename S>
structis_c_str_helper
{
staticconstexprbool value = std::is_same<
CharT*,
// TODO: I'm so sorry for this... Can this be made cleaner?typename std::add_pointer<
typename std::remove_cv<
typename std::remove_pointer<
typename std::decay<
S
>::type
>::type
>::type
>::type
>::value;
};
template<typename S>
structis_c_str
{
staticconstexprbool value = is_c_str_helper<char, S>::value;
};
#ifdef _WIN32
template<typename S>
structis_c_wstr
{
staticconstexprbool value = is_c_str_helper<wchar_t, S>::value;
};
#endif// _WIN32template<typename S>
structis_c_str_or_c_wstr
{
staticconstexprbool value = is_c_str<S>::value
#ifdef _WIN32
|| is_c_wstr<S>::value
#endif
;
};
template<
typename String,
typename = decltype(std::declval<String>().data()),
typename = typename std::enable_if<!is_c_str_or_c_wstr<String>::value>::type
> consttypename char_type<String>::type* c_str(const String& path)
{
return path.data();
}
template<
typename String,
typename = decltype(std::declval<String>().empty()),
typename = typename std::enable_if<!is_c_str_or_c_wstr<String>::value>::type
> boolempty(const String& path)
{
return path.empty();
}
template<
typename String,
typename = typename std::enable_if<is_c_str_or_c_wstr<String>::value>::type
> consttypename char_type<String>::type* c_str(String path)
{
return path;
}
template<
typename String,
typename = typename std::enable_if<is_c_str_or_c_wstr<String>::value>::type
> boolempty(String path)
{
return !path || (*path == 0);
}
} // namespace detail
} // namespace mio
#endif// MIO_STRING_UTIL_HEADER
The text was updated successfully, but these errors were encountered:
Twilight-Dream-Of-Magic
changed the title
Request to refine the TODO comment code requirements?
[C++ 2020 template concept support] Request refinement to help you complete code requests from TODO reviews?
Feb 6, 2022
If there are any errors in the code I have written, we can discuss the solutions together.
Twilight-Dream-Of-Magic
changed the title
[C++ 2020 template concept support] Request refinement to help you complete code requests from TODO reviews?
[C++ 2020 template concept support] Request refinement to help you complete code requests from TODO comments?
Feb 6, 2022
Can I add for you, the conceptual support for the C++ programming language 2020 standard?
Because your TDDO: code comments look like they need help.
Just like the your code below:
The text was updated successfully, but these errors were encountered: