指定初始化器(C++20)如何与CTAD配合使用?
这段代码在gcc9.2中可以正常工作,但在clang8中失败了。
template <typename int_t=int, typename float_t=float>
struct my_pair {
int_t first;
float_t second;
};
template<typename ... ts>
my_pair(ts...) -> my_pair<ts...>;
int main() {
my_pair x{.first = 20, .second = 20.f};
static_assert( std::is_same_v<decltype(x.first), int> );
static_assert( std::is_same_v<decltype(x.second), float> );
}
这是否应该是有效的?
在https://godbolt.org/z/KtNI43上查看示例。