如何将std::array<char, N>
传递给这样的函数:
template<size_t N>
void safe_func(char (&dest)[N]);
我尝试这个:
#include <array>
template <size_t N> using SafeArray = char[N];
template <size_t N> void safe_func(char (&dest)[N]) {}
int main() {
SafeArray<10> a1;
safe_func(a1);
std::array<char, 10> a2;
safe_func(*static_cast<SafeArray<10> *>(static_cast<void *>(a2.data())));
}
它能够工作,但我怀疑可能是我的类型转换有问题,而且在其他编译器或平台(我使用gcc / linux / amd64)上,我遇到了错误的引用?