相关疑难解决方法(0)

具有模板类型的C ++ 20指定的初始值设定项

指定的初始化程序(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)

这应该是有效的吗?

参见https://godbolt.org/z/KtNI43上的示例

c++ designated-initializer class-template argument-deduction c++20

8
推荐指数
1
解决办法
123
查看次数