我有以下示例:
#include <array>
struct A {
const char* str;
const char* str2;
};
template<size_t N>
struct As {
std::array<A,N> elems_;
};
template<class... Args>
As(Args...)->As<sizeof...(Args)>; //<-- NOTE: deduction guide !
constexpr static As as{A{"a","b"}, A{"1","2"}};//<-- 'retyping' A here
int main() {
return as.elems_.size();
}
虽然此代码有效,但我想避免在A
聚合列表中对 ' 进行“重新输入”,但如果我将其排除在外,则演绎指南将失败:("cannot deduce template arguments for 'As'"
我想这是有道理的)。也许解决这个问题的一种方法是手写我需要的任何数量的推导指南,从那时起我可以A
在每个推导指南中写下类型(即:我需要的容器的每个尺寸都需要一个推导)。