【发布时间】:2014-01-13 20:48:45
【问题描述】:
考虑以下代码:
#include <iostream>
#include <type_traits>
#include <typeinfo>
struct Base
{
int f() const;
double f();
};
struct Derived
: public Base
{
template <typename T = decltype(std::declval<Derived>().f())> // Modify this
T g() const;
};
int main()
{
const Derived x;
std::cout<<typeid(decltype(x.g())).name()<<std::endl; // Prints "d", not "i"
return 0;
}
如何修改decltype(std::declval<Derived>().f()) 使其返回int 而不是double?
我尝试过decltype(std::declval<const Derived>().f(),但它无法编译。
【问题讨论】:
标签: c++ c++11 constants decltype