我對這個模板[示例一]的擴展感到困惑。如果在運行時檢查b存儲的構造函數中的bool b是否存在?它被放入私人數據部分[示例二]?或者它成爲編譯時間,並刪除基於bool的分支?或者它簡單地 「粘貼」 什麼被用作模板參數傳遞到如果(B)[實施例3]如何擴展模板參數
實施例之一:
template<bool b>
class Test
{
public:
Test()
{
if(b)
{
// do something
}
else
{
// do something else
}
}
};
實施例二:
class Test
{
public:
Test()
{
if(b)
{
// do something
}
else
{
// do something else
}
}
private:
bool b = true;
};
實施例3 :
//called with Test<true>
class Test
{
public:
Test()
{
if(true)
{
// do something
}
else
{
// do something else - probably removed due too compiler optimization
}
}
};