3
爲什麼這句話在C++中有效?參數說明中的對象
qi::rule<Iterator, std::string(), skipper<Iterator> > name;
從這裏提取:
規則的定義(續)以下:
template <typename Iterator, typename T1, typename T2,
typename T3, typename T4>
struct rule : boost::proto::extends<bla, bla>, parser<bla, bla>
{
bla, bla
};
從這裏提取:
規則定義需要一個類型,但是我把它的對象。有可能的?
一個實例可能是值得注意的一個原因,這是明確的是由於該模板參數只能是(一)類型或( b)編譯時常量積分表達式。由於構造函數不能是'constexpr',編譯器很清楚你不是構造一個對象而是聲明一個函數類型。 C++ FQA在http://yosefk.com/c++fqa/ctors.html#fqa-10.2 – sehe
@上有一個很好的段落,我的理解是構造函數**可以是'constexpr',但是因爲' std :: string'不是一個整型,'std :: string()'不能是一個非整型表達式。 – juanchopanza
好的,這很漂亮! http://en.cppreference.com/w/cpp/language/constexpr。感謝精確度。 – sehe