2017-10-10 8 views
0

gcc 7.2にいくつか問題があります。私は、この型特性GCC 7が正しいタイプの形質特化を選択していない

template<typename T> 
struct audio_frame_channels {} 

template<int N> 
struct audio_frame_channels<std::array<float, N>> { 
    static constexpr auto value = N; 
}; 

を持っているし、私はこのようにそれを使用します。

template<typename T> 
    auto redirect(T& buf) -> 
    ProcessData<audio_frame_channels<std::remove_reference_t< 
            decltype(buf[0])>>::value>; 

打ち鳴らす6は、これで何も問題はありませんが、GCC 7.2は‘value’ is not a member of ‘top1::audio::audio_frame_channels<std::array<float, 1> >’ が、私は間違って何かを得て、またはである持っていることを訴えますこれはあなたが実験的なコンパイラで何を得ますか?

編集:必須godbolting:

https://godbolt.org/g/Y1EFYC

答えて

1

std::arrayのための第2のテンプレートパラメータはstd::size_t、ないintです。次のように変更する必要があります。

template<std::size_t N> //instead of int N 
struct audio_frame_channels<std::array<float, N>> { 
    static constexpr auto value = N; 
}; 
関連する問題