2017-01-07 4 views
0

と仮定私が持っている条件付きconstexprのメンバ関数

template <typename T> 
class foo { 
    T m; 

    decltype(auto) f() { return m.f(); } 
}; 

がどのように私はfoo:f()T::f()がconstexprのある場合にのみ、constexprの指定子与えることができますテンプレートクラス?

答えて

3

あなたはそれにconstexprを平手打ち:

constexpr decltype(auto) f() { return m.f(); } 

はい、それはT::f()constexprない場合であっても完全にまだ有効です。そのような関数は単純に定数式では使用できません。​​を参照してください。