指定的初始化程序(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> );
}
Run Code Online (Sandbox Code Playgroud)
这应该是有效的吗?
c++ designated-initializer class-template argument-deduction c++20