下面一段代碼:什麼錯誤C2274的原因是什麼?
auto td = boost::posix_time::seconds(1);
auto seconds = td.seconds(); // (*)
std::cout << seconds << std::endl;
給出CL 16以下錯誤:
錯誤C2274: '功能樣式轉換':作爲右側非法'。運營商
標記爲// (*)
的行上。
當我改變的第一行:
boost::posix_time::time_duration td = boost::posix_time::seconds(1);
它編譯罰款。
如果我理解正確的話,boost::posix_time::seconds(1)
返回這個類的一個實例:
class seconds : public time_duration
{
public:
explicit seconds(long s) :
time_duration(0,0,s)
{}
};
(從升壓/ DATE_TIME /了posix_time/posix_time_duration.hpp)
和time_duration
類公開公共方法seconds
:
sec_type seconds() const
(來自boost/date_time/time_duration.hpp)。
那麼,什麼是與auto
這裏的問題?